ホームページ >バックエンド開発 >Golang >Go言語によるI/O操作の詳細な説明

Go言語によるI/O操作の詳細な説明

PHPz
PHPzオリジナル
2024-03-28 13:15:04910ブラウズ

Go言語によるI/O操作の詳細な説明

Go 言語は、Google によって開発されたオープンソース プログラミング言語で、シンプルさ、効率性、同時実行パフォーマンスに重点を置くように設計されています。 Go 言語では、I/O 操作は非常に一般的かつ重要な部分です。この記事では、ファイルの読み書き、ネットワーク通信など、Go 言語の I/O 操作を詳しく紹介し、具体的なコード例を示します。 。

ファイルの読み取りと書き込み

ファイルの読み取り

Go 言語では、os.Open 関数を使用して読み取り操作のためにファイルを開くことができます。例 コードは次のとおりです:

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("sample.txt")
    if err != nil {
        fmt.Println("文件打开失败:", err)
        return
    }
    defer file.Close()

    buf := make([]byte, 1024)
    n, err := file.Read(buf)
    if err != nil {
        fmt.Println("文件读取失败:", err)
        return
    }

    fmt.Println(string(buf[:n]))
}

ファイルの書き込み

関数 os.Create を使用して、書き込み用の新しいファイルを作成します。サンプル コードは次のとおりです。 ##

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Create("output.txt")
    if err != nil {
        fmt.Println("文件创建失败:", err)
        return
    }
    defer file.Close()

    data := []byte("Hello, World!")
    _, err = file.Write(data)
    if err != nil {
        fmt.Println("文件写入失败:", err)
        return
    }

    fmt.Println("文件写入成功")
}

ネットワーク通信

TCP サーバー

TCP サーバーは、

net パッケージを使用して簡単に実装できます。サンプル コードは次のとおりです。 <pre class='brush:go;toolbar:false;'>package main import ( &quot;fmt&quot; &quot;net&quot; ) func handleConnection(conn net.Conn) { defer conn.Close() buf := make([]byte, 1024) n, err := conn.Read(buf) if err != nil { fmt.Println(&quot;读取数据失败:&quot;, err) return } fmt.Println(&quot;接收到客户端数据:&quot;, string(buf[:n])) } func main() { listener, err := net.Listen(&quot;tcp&quot;, &quot;localhost:8888&quot;) if err != nil { fmt.Println(&quot;TCP服务器启动失败:&quot;, err) return } defer listener.Close() fmt.Println(&quot;TCP服务器启动成功,监听端口8888&quot;) for { conn, err := listener.Accept() if err != nil { fmt.Println(&quot;接受连接失败:&quot;, err) continue } go handleConnection(conn) } }</pre>TCP クライアント

TCP クライアントは、

net

パッケージを使用して実装することもできます。サンプル コードは次のとおりです: <pre class='brush:go;toolbar:false;'>package main import ( &quot;fmt&quot; &quot;net&quot; ) func main() { conn, err := net.Dial(&quot;tcp&quot;, &quot;localhost:8888&quot;) if err != nil { fmt.Println(&quot;连接服务器失败:&quot;, err) return } defer conn.Close() data := []byte(&quot;Hello, Server!&quot;) _, err = conn.Write(data) if err != nil { fmt.Println(&quot;发送数据失败:&quot;, err) return } fmt.Println(&quot;发送数据成功&quot;) }</pre>上記は詳細な紹介です。 Go 言語での I/O 操作と特定のコード例について説明します。今後も Go 言語に関する記事に注目していただければ幸いです。

以上がGo言語によるI/O操作の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。