一、《Go语言的读入读出》
1、GO语言的读入
[1]因为Scanln()遇到换行符或EOF的时候终止读取,所以在输入的时候只要按下回车键就会结束读取.
[2]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.
[3]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.
/*
[1]因为Scanln()遇到换行符或EOF的时候终止读取,所以在输入的时候只要按下回车键就会结束读取.
[2]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.
[3]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.
*/
package main
import (
"fmt"
)
func main() {
fmt.Println("读入")
var number int
var name string
_, err := fmt.Scan(&number, &name)
fmt.Println("number:", number)
fmt.Println("name:", name)
fmt.Println(err)
}
2、GO语言的输出
在Go语言中有多种输出方式,不同的输出适用场景不同。
(原内容,原内容+ln,原内容+f)
- PrintXX()
- FprintXX()
- SprintXX()
二、GO语言的循环结构
package main
import (
"fmt"
)
func main() {
// GoLand只存在for一种循环
fmt.Println("for循环")
var i = 1
for i < 3 {
fmt.Println("i : ", i)
i++
}
// continue和break依旧可以用
}
三、GO语言的判断结构
package main
import (
"fmt"
)
func main() {
fmt.Println("判断语句")
var n = 1
if n&1 == 1 {
fmt.Println("这是一个奇数")
} else {
fmt.Print("这是一个偶数")
}
}
四、GO语言的JSON操作
/*
在进行JSON操作时,需要保证结构体的公开字段(属性变量名)首字母大写
[1]JSON序列化操作语法
res1,err1 := json.Marshal(序列化对象)
fmt.Println(res1,err1)
[2]JSON反序列化操作语法
var res2 序列化对象类型
err2 = json.Unmarshal(JSON对象res1,反序列化存储对象res2)
fmt.Println(res2,err2)
*/
package main
import (
"encoding/json"
"fmt"
)
type MyStruct struct {
Name string
Id int
}
func main() {
fmt.Println("JSON操作")
myStruct := MyStruct{"jom", 21}
some, err := json.Marshal(myStruct)
fmt.Println(string(some), err)
var myStruct2 MyStruct
err = json.Unmarshal(some, &myStruct2)
fmt.Println(myStruct2, err)
}
五、GO语言的函数创建、调用
package main
import (
"fmt"
)
func add(a int, b int) int {
return a + b
}
func main() {
fmt.Println(add(1, 2))
number := add(1, 2)
fmt.Println(number)
nums := map[string]int{"1": 1, "2": 2, "3": 3}
fmt.Println(nums)
var x int
var y bool
x, y = nums["4"]
fmt.Println(x, y)
}
六、GO语言结构体
/*
[1]已知结构体stu(name,id)
[2]结构体方法语法:
① 修改原结构体
func (s *stu) 方法名(传入参数 传入参数类型) 返回值类型{
方法体
}
② 不修改原结构体
func (s *stu) 方法名(传入参数 传入参数类型) 返回值类型{
方法体
}
*/
package main
import (
"fmt"
)
type stu struct {
name string
num int
}
func (s *stu) setNum(num int) bool {
s.num = num
return true
}
func main() {
fmt.Println("结构体方法")
stu1 := stu{name: "kom", num: 1}
fmt.Println(stu1) // {kom 1}
stu1.setNum(10)
fmt.Println(stu1) // {kom 10}
}
七、GO语言的switch语句
package main
import (
"fmt"
)
func main() {
fmt.Println("这是switch语句")
// 每个case默认break,不用像C/C++语言一样,在case之后写break
var some = 1
switch some {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
case 3:
fmt.Println("3")
default:
fmt.Println("4")
}
}
八、GO语言的进程处理
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
fmt.Println("进程信息")
fmt.Println(os.Args) // 进程在执行时的命令行参数
// [C:\Users\Administrator\AppData\Local\JetBrains\GoLand2024.2\tmp\GoLand___3go_build__go.exe]
fmt.Println(os.Getenv("GOPATH")) // 获取GO的PATH
// D:\program\GoLand\GOPATH
buf, err := exec.Command("grep", "127.0.0.1", "/etc/hosts/").CombinedOutput() // 快速启动子进程,并获取相关信息
//[] exec: "grep": executable file not found in %PATH%
fmt.Println(buf, err)
}
九、GO语言的时间处理
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("时间处理")
nowTime := time.Now()
fmt.Println(nowTime)
// 2024-11-04 09:10:57.5864502 +0800 CST m=+0.000000001
// 获取当前时间点的一些信息
fmt.Println(nowTime.Year())
// 2024
fmt.Println(nowTime.Month())
// November
fmt.Println(nowTime.Day())
// 4
fmt.Println(nowTime.Hour())
// 9
fmt.Println(nowTime.Minute())
// 10
fmt.Println(nowTime.Second())
// 57
fmt.Println(nowTime.Nanosecond())
// 586450200
fmt.Println(nowTime.Location())
// Local
fmt.Println(nowTime.YearDay())
// 309
}