Go语言:对其语法的一些见解
按照如下教程写了这样如下两段代码
Return and handle an error - The Go Programming Language
目录
1.初始化一个模块
2.编写代码
3.编写和执行过程中的一些报错提示
4.语法入门经验对比
1.初始化一个模块
D:\code\go_code\el>go mod init el
go: creating new go.mod: module elD:\code\go_code\el>type nul> greet.goD:\code\go_code\el>type nul> hello.go
go.mod
module elgo 1.25.0
2.编写代码
hello.go
package mainimport ("fmt""log"
)func main(){log.SetPrefix("greetings: ")log.SetFlags(0)message, err := Hello("Han")if err != nil {log.Fatal(err)}fmt.Println(message)
}
2.编写greet.go
package mainimport ("errors""fmt"
)func Hello(name string) (string, error){if name == "" {return "", errors.New("empty name") }message := fmt.Sprintf("Hi, %v. Welcome", name)return message, nil
}
3.编译执行成功的情况
3.编写和执行过程中的一些报错提示
3.1 .\hello.go:16:13: declared and not used: err
就是说如果go语言中的定义变量没有被引用的话,程序编译就会报错
也就是如下内容
3.2 assignment mismatch: 2 variables but Hello returns 1 value
也就是说函数的返回值如果是一个组合,那么组合中间需要逗号隔开,它不像参数类型和名称一样。
3.3 too many return values
也就是说,go语言文件中,要对每个返回的值进行处理,而不能空置。这一点和其他语言还是有区别的,严谨了很多,绝对不会产生废代码,除非你注释掉。
4.语法入门经验对比
1.类似Java 驼峰格式的方法名
2.类似python的可以返回一个元组
3.类似python一样的if 比较表达式 可以不需要括号
4.不理解为什么在等号面前搞一个冒号:这在别的编程语言从没见过,是有什么神奇之处吗
5.返回的一个对象信息,需要进行New创建,这和Java 很像
6.字符列表中的最后一个元素一定要带上逗号 “,”,否则会报错
.\greet.go:22:33: syntax error: unexpected newline in composite literal; possibly missing comma or }