返回

从小白到高手,轻松掌握Go语言基础数据类型和输入输出

后端







### 前言

Go语言是一种静态类型语言,具有多种基本数据类型,包括整形、浮点、字符、字符串、布尔等。Go语言还提供了丰富的输入输出功能,可以方便地从终端、文件和网络等来源读取和写入数据。

### Go语言基础数据类型

Go语言的基础数据类型分为整数类型、浮点类型、字符类型、字符串类型和布尔类型。

**整数类型** 

整数类型包括intint8int16int32int64。它们分别表示有符号的8位、16位、32位和64位整数。

**浮点类型** 

浮点类型包括float32float64。它们分别表示32位和64位浮点数。

**字符类型** 

字符类型表示单个字符。它可以使用单引号或双引号表示。

**字符串类型** 

字符串类型表示一组字符。它可以使用双引号或反引号表示。

**布尔类型** 

布尔类型表示真或假。它可以使用truefalse表示。

### Go语言输入输出

Go语言提供了丰富的输入输出功能,可以方便地从终端、文件和网络等来源读取和写入数据。

**从终端读取数据** 

可以使用fmt.Scan()函数从终端读取数据。该函数可以读取各种类型的数据,包括整数、浮点数、字符和字符串。

```go
var name string
fmt.Print("Enter your name: ")
fmt.Scanln(&name)
fmt.Println("Hello", name)

向终端写入数据

可以使用fmt.Print()或fmt.Println()函数向终端写入数据。fmt.Print()函数只写入数据,不换行。fmt.Println()函数写入数据后换行。

fmt.Print("Hello, world!")
fmt.Println("Hello, world!")

从文件读取数据

可以使用os.Open()函数打开文件,然后使用bufio.NewReader()函数创建一个缓冲区。可以使用bufio.ReadString()函数从缓冲区中读取数据。

file, err := os.Open("data.txt")
if err != nil {
    fmt.Println(err)
    return
}
defer file.Close()

scanner := bufio.NewScanner(file)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

向文件写入数据

可以使用os.Create()函数创建文件,然后使用bufio.NewWriter()函数创建一个缓冲区。可以使用bufio.WriteString()函数向缓冲区中写入数据。

file, err := os.Create("data.txt")
if err != nil {
    fmt.Println(err)
    return
}
defer file.Close()

writer := bufio.NewWriter(file)
writer.WriteString("Hello, world!")
writer.Flush()

从网络读取数据

可以使用net.Dial()函数连接到网络服务器,然后使用bufio.NewReader()函数创建一个缓冲区。可以使用bufio.ReadString()函数从缓冲区中读取数据。

conn, err := net.Dial("tcp", "127.0.0.1:80")
if err != nil {
    fmt.Println(err)
    return
}
defer conn.Close()

scanner := bufio.NewScanner(conn)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

向网络写入数据

可以使用net.Dial()函数连接到网络服务器,然后使用bufio.NewWriter()函数创建一个缓冲区。可以使用bufio.WriteString()函数向缓冲区中写入数据。

conn, err := net.Dial("tcp", "127.0.0.1:80")
if err != nil {
    fmt.Println(err)
    return
}
defer conn.Close()

writer := bufio.NewWriter(conn)
writer.WriteString("Hello, world!")
writer.Flush()