Maison >développement back-end >Golang >Explication détaillée des opérations d'E/S en langage Go

Explication détaillée des opérations d'E/S en langage Go

PHPz
PHPzoriginal
2024-03-28 13:15:04916parcourir

Explication détaillée des opérations dE/S en langage Go

Le langage Go est un langage de programmation open source développé par Google. Il est conçu pour se concentrer sur la simplicité, l'efficacité et les performances de concurrence. Dans le langage Go, les opérations d'E/S sont une partie très courante et importante. Cet article présentera en détail les opérations d'E/S dans le langage Go, y compris la lecture et l'écriture de fichiers, la communication réseau, etc., et fournira des exemples de code spécifiques. .

Lecture et écriture de fichiers

Lecture de fichiers

En langage Go, vous pouvez utiliser la fonction os.Open pour ouvrir un fichier pour les opérations de lecture. L'exemple de code est le suivant : 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服务器

使用net包可以很方便地实现TCP服务器,示例代码如下:

package main

import (
    "fmt"
    "net"
)

func handleConnection(conn net.Conn) {
    defer conn.Close()

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

    fmt.Println("接收到客户端数据:", string(buf[:n]))
}

func main() {
    listener, err := net.Listen("tcp", "localhost:8888")
    if err != nil {
        fmt.Println("TCP服务器启动失败:", err)
        return
    }
    defer listener.Close()

    fmt.Println("TCP服务器启动成功,监听端口8888")

    for {
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("接受连接失败:", err)
            continue
        }

        go handleConnection(conn)
    }
}

TCP客户端

使用net

package main

import (
    "fmt"
    "net"
)

func main() {
    conn, err := net.Dial("tcp", "localhost:8888")
    if err != nil {
        fmt.Println("连接服务器失败:", err)
        return
    }
    defer conn.Close()

    data := []byte("Hello, Server!")
    _, err = conn.Write(data)
    if err != nil {
        fmt.Println("发送数据失败:", err)
        return
    }

    fmt.Println("发送数据成功")
}

Fichier. écriture

Utilisez la fonction os.Create pour créer un nouveau fichier pour les opérations d'écriture. L'exemple de code est le suivant : 🎜rrreee🎜Communication réseau🎜🎜Serveur TCP🎜🎜Utilisation du net<. le package> peut être très pratique. Pour implémenter un serveur TCP, l'exemple de code est le suivant : 🎜rrreee🎜Client TCP🎜🎜En utilisant le package <code>net, vous pouvez également implémenter un client TCP. Le code est le suivant : 🎜rrreee🎜Ce qui précède concerne les opérations d'E/S en langage Go. Introduction détaillée et exemples de code spécifiques. J'espère que cela sera utile aux lecteurs. Bienvenue à continuer à prêter attention à davantage d'articles sur le langage Go. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn