go文字列と時間標準パッケージの使用の概要

Go言語の標準ライブラリは、ネットワーク、システム、暗号化、コーディング、グラフィックスなどのすべての側面をカバーしています。標準ライブラリのhttpパッケージを直接使用して、HTTPプロトコルを送受信できます。ネットワークライブラリは、高-パフォーマンスオペレーティングシステム通信モデル(Linuxのepoll、Windows IOCP);すべての暗号化とエンコードは組み込みのサポートであり、サードパーティの開発者から入手する必要はありません。

Go言語コンパイラも標準ライブラリの一部であり、レクサーを介してソースコードをスキャンし、構文ツリーを使用してソースロジックブランチを取得します。Go言語の周辺ツールも、これらの標準ライブラリに基づいて構築されています。ほとんどの要件は、標準ライブラリで完了することができます

Go言語の標準ライブラリは、パッケージの形式でサポートを提供します。次の表に、Go言語の標準ライブラリでの一般的なパッケージとその機能を示します。

言語標準ライブラリパッケージ名関数
bufioバッファリングされたI / O操作
バイトに移動してバイト操作を実現
コンテナパッケージヒープ、リストおよびリングリストコンテナ
暗号化アルゴリズム
データベースデータベースドライバおよびインターフェイス
デバッグさまざまなデバッグファイル形式アクセスおよび
JSONなどの一般的なアルゴリズムをエンコードするデバッグ関数、XML、Base64およびその他の
フラグコマンドライン解析
fmt形式の操作
Go Go言語の字句、構文ツリー、タイプなど。このパッケージを使用して、コード情報を抽出および変更し、
html HTMLエスケープおよびテンプレートシステム
イメージアクセスを一般的なグラフィック形式に変更し、
ioを生成して、I / Oオリジナルアクセスインターフェイスおよびアクセスパッケージ
数学数学ライブラリ
ネットネットワークライブラリを実現し、ソケット、HTTPをサポートします。 、メール、RPCやSMTPなどの
osオペレーティングシステムプラットフォーム
は、パスをカプセル化するためにプラットフォーム操作に依存しません。各オペレーティング
システムのパス操作ユーティリティ関数プラグインGo1.7と互換性がありますコードをプラグインにコンパイルし、オンデマンドで
リフレクト言語リフレクションサポートをロードするためのサポート。コード内の型情報を動的に取得し、変数の値を取得および変更できます
regexp正規表現カプセル化
ランタイムインターフェイス
ソートソートインターフェイス
文字列文字列変換、分析、およびユーティリティ関数
時間時間インターフェイス
テキストテキストテンプレートとトークンレクサー

fmt(フォーマット操作)
文字列フォーマットで一般的に使用される動詞と関数動詞
関数
%vは元の値を値で出力します
%+ v%vに基づいて構造フィールドの名前と値を展開します
%#v出力Go言語構文フォーマット値
% Tおよび出力値Go言語構文のタイプ
%%%出力本体
%bバイナリ整数が表示されます
%O整数が8進数で表示されます
%d 10
進整数%x 16進整数
%X整数が16進および大文字で表示されます。
%Uユニフォーム文字
%f浮動小数点数の全精度出力;%。2f 2桁の精度出力
%pポインター、16進表示

文字列(文字列操作)

package main
 
import (
    "fmt"
    "strings"
    "strconv"
)
 
func main(){
    
    
    var strTest string = " http://www.cnblog.com/kaichenkai "
 
    // 是否以 http:// 开头
    ret1 := strings.HasPrefix(strTest, "http://")
    fmt.Println("HasPrefix result:", ret1)  // HasPrefix result: false
 
    // 是否以 .com 结尾
    ret2 := strings.HasSuffix(strTest, ".com")
    fmt.Println("HasSuffix result:", ret2)  // HasSuffix result: false
 
    // 返回 k 在字符串中首次出现的位置,没有则返回 -1
    ret3 := strings.Index(strTest, "k")
    fmt.Println("Index is:", ret3)  // Index is: 23
 
    // 返回 k 在字符串中最后出现的位置,没有则返回 -1
    ret4 := strings.LastIndex(strTest, "k")
    fmt.Println("LastIndex is:", ret4)  // LastIndex is: 30
 
    // 将 kai 换成 空格,替换1次,返回操作后的结果字符串
    ret5 := strings.Replace(strTest, "kai", " ", 1)
    fmt.Println("replace complete, strTest is:", ret5)  // replace complete, strTest is:  http://www.cnblog.com/ chenkai
 
    // 统计子字符串 kai 的出现次数
    ret6 := strings.Count(strTest, "kai")
    fmt.Println("Count is:", ret6)  // Count is: 2
 
    // 将字符串重复 n 次,返回操作后的结果字符串
    ret7 := strings.Repeat(strTest, 2)
    fmt.Println("Repeat result is:", ret7)  // Repeat result is:  http://www.cnblog.com/kaichenkai  http://www.cnblog.com/kaichenkai
 
    // 转小写
    ret8 := strings.ToLower(strTest)
    fmt.Println("Lower result is:", ret8)  // Lower result is:  http://www.cnblog.com/kaichenkai
 
    // 转大写
    ret9 := strings.ToUpper(strTest)
    fmt.Println("Upper result is:", ret9)  // Upper result is:  HTTP://WWW.CNBLOG.COM/KAICHENKAI
 
    // 去掉收尾空白字符,返回操作后的结果字符串
    ret10 := strings.TrimSpace(strTest)
    fmt.Println("TrimSpace:", ret10)  // TrimSpace: http://www.cnblog.com/kaichenkai
 
    // 去掉首尾指定字符,返回操作后的结果字符串
    ret11 := strings.Trim(strTest, "http://")
    fmt.Println("Trim:", ret11)  // Trim:  http://www.cnblog.com/kaichenkai
 
    // 去掉左侧指定字符,返回操作后的结果字符串
    ret12 := strings.TrimLeft(strTest, " http://")
    fmt.Println("TrimLeft:", ret12)  // TrimLeft: www.cnblog.com/kaichenkai
 
    // 去掉右侧指定字符,返回操作后的结果字符串
    ret13 := strings.TrimRight(strTest, "kai ")
    fmt.Println("TrimRight:", ret13)  // TrimRight:  http://www.cnblog.com/kaichen
 
    // 以空格分割,返回子串的 slice
    ret14 := strings.Fields(strTest)
    fmt.Println("Fields:", ret14)  // Fields: [http://www.cnblog.com/kaichenkai]
 
    // 以 .(点)进行分割,返回子串的 slice
    ret15 := strings.Split(strTest, ".")
    fmt.Println("Split:", ret15)  // Split: [ http://www cnblog com/kaichenkai ]
 
    // 以 $ 将 slice 中的元素进行拼接
    ret16 := strings.Join(ret15, "$")
    fmt.Println("Join:", ret16)  // Join:  http://www$cnblog$com/kaichenkai
 
    // 将整数转换为字符串
    ret17 := strconv.Itoa(1000)
    fmt.Println("Itoa:", ret17)  // Itoa: 1000
 
    // 将字符串转换为数字,前提是字符串是纯数字组成,不然会报错
    ret18, error := strconv.Atoi("100")
    if error == nil{
    
    
        fmt.Println("Atoi:", ret18)  // Atoi: 100
    }
}

タイムパッケージの定数

const (
    Nanosecond  Duration = 1
    Microsecond  = 1000 * Nanosecond
    Millisecond  = 1000 * Microsecond
    Second       = 1000 * Millisecond
    Minute       = 60 * Second
    Hour         = 60 * Minute
)

時間のタイプはDurationであり、Durationは実際にはint64タイプであり、変換できます。

Duration.String()は、Durationの値を文字列に変換できます

now := time.Now()
fmt.Printf("type:%T \n", now)
fmt.Printf("value:%v \n", now)
 
运行结果:
type:time.Time
value:2019-05-25 17:57:57.9463214 +0800 CST m=+0.003026301

カスタム時間

格式:funcParse(layout、value string)(Time、error)

Parseは、フォーマットされた時間文字列を解析し、それが表す時間を返します。
レイアウトは入力の時間形式を定義し、値の時間形式はレイアウトと一致している必要があります

t, error := time.Parse("2006-01-02 15:04:05", "2019-05-25 19:00:00")
if error == nil{
    
    
    fmt.Printf("%T \n", t)
    fmt.Printf("%v \n", t)
}
 
运行结果:
time.Time
2019-05-25 19:00:00 +0000 UTC

時間の年、月、日、時、分、秒を取得します。時間タイプ

年:= ​​time.Now()。Year()
月:= time.Now()。Month()
日:= time.Now()。Day()
時間:= time.Now()。Hour()
分: = time.Now()。Minute()
second:= time.Now()。Second()

// 秒级
timestamp := time.Now().Unix()
fmt.Println(timestamp)
 
// 毫秒
milliTimestamp := time.Now().UnixNano() / 1e6
fmt.Println(milliTimestamp)
 
// 纳秒
NanoTimestamp := time.Now().UnixNano()
fmt.Println(NanoTimestamp)
 
 
运行结果:
1558782662
1558782662752
1558782662755344000

デモ:統計プログラムの実行時間

func stats(){
    
    
    time.Sleep(time.Second)
}
 
func main(){
    
    
    var startTime int64 = time.Now().UnixNano() / 1e6
    stats()
    var endTime int64 = time.Now().UnixNano() / 1e6
    fmt.Println("use time:", endTime - startTime)
}
 
运行结果:
1001

おすすめ

転載: blog.csdn.net/Fengfgg/article/details/114096181