在下面代码中,向任何调用者返回问候语:
package greetings
import "fmt"
// Hello returns a greeting for the named person.
func Hello(name string) string {
// Return a greeting that embeds the name in a message.
message := fmt.Sprintf("Hi, %v. Welcome!", name)
return message
}
这段代码做了下面几件事:
- 声明了一个
greetings
包用来收集相关函数; - 实现了一个
Hello
函数返回问候语;
这个函数接受一个类型为 string
的 name
参数,同时也返回 string
类型。
在 Go 中,名称以大写字母开头的函数可以被不在同一个包中的函数调用。这在 Go 中称为导出名称 (exported name) 。有关导出名称的更多信息,请参阅 Go 导览中的导出名称。
在 JS 模块中导出函数和变量是通过
export
实现的,在 Java 中由于一个模块就是一个类,所以 Java 的导出是通过访问修饰符public
、private
、protected
实现的
- 声明了一个
message
变量用来保存问候语;
在 Go 中,:=
操作符是声明和初始化(赋值)变量的简写,同时还会自动推断类型。实际上分成两步也是可以的:
var message string
message = fmt.Sprintf("Hi, %v. Welcome!", name)
总结一下
=
是赋值,:=
是声明变量并赋值,然后 Go 也是可以自动推断类型,很多时候不需要加类型声明
- 使用
fmt
包的Sprintf
函数创建问候消息,第一个参数是字符串格式,Sprintf
会用name
参数的值替换格式动词%v
; - 返回格式化后的问候消息给调用者;