Go学习笔记:Go语言上手

87 阅读1分钟

搭建开发环境

安装 Go

go.dev/doc/install

下载集成环境 GoLand

www.jetbrains.com/go/

运行 HelloWorld

创建项目

编写代码

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World")
}

运行结果:

Hello World

Process finished with
 the exit code 0

基础语法

主要有:变量、if else、switch、for(range)、数组、切片、map、函数、指针、结构体(结构体函数)、错误处理、字符串、JSON 处理(序列化&反序列化)、时间处理、数字解析、进程信息

变量

声明变量的时候,一般会自动推导变量类型,也可以显示定义变量类型

方式一:var 关键字

var 变量名 类型

例如:

var str string
var a = 1
var (
    x int
    y int
)
var (
    m = 1
    n = 2
)

方式二::=

示例:

func main() {
    a := 1
    b := "abc"
    fmt.Println(a, b)
}

for

for {} 死循环

for {
    fmt.Println("hello world")
}

range

示例:

nums := [3]int{1,2,3}
for index, num := range nums {
    fmt.Println(index)
    fmt.Println(num)
}

结构体

结构体方法

示例:

package main

import "fmt"

type user struct {
    name     string
    password string
}

func (u *user) setName(name string) {
    u.name = name
}

func main() {
    a := user{"caiNiao", "1234"}
    fmt.Println(a)
    a.setName("caiJi")
    fmt.Println(a)
}
{caiNiao 1234}
{caiJi 1234}

Process finished with the exit code 0

JSON 处理

包含序列化与反序列化

type userInfo struct {
    Name    string `json:"name"`
    Age     int `json:"age"`
    Hobbies []string `json:"hobbies"`
}

序列化

a := userInfo{"caiNiao", 18, []string{"Java", "Go"}}
buf, err := json.Marshal(a)
if err != nil {
    return
}
fmt.Println(string(buf)) // 转为string格式,否则打印二进制码
{"name":"caiNiao","age":18,"hobbies":["Java","Go"]}

Process finished with the exit code 0

反序列化

b := userInfo{}
err = json.Unmarshal(buf, &b)
if err != nil {
    return
}
fmt.Println(b)
{caiNiao 18 [Java Go]}

Process finished with the exit code 0