#### 一、简单进入一个hello world
```
package main
import "fmt"
func main() {
fmt.Println("hello world!")
}
```
1.package main是将本文件打包成main包,一个程序**有且只有一个main包**;
2.import是该文件下所需的“依赖的包”,这里我们所需以来的包是fmt,所需“依赖”的函数是Println()。golang中都是通过包.函数来进行函数调用的;
3.一个程**有且只有一个main()函数**
#### 二、变量的定义
######(一)使用var关键字进行定义
```
func variableTypeDeduction() {
var a, b = 3, 4
var c, d, e = 1, "hello", true
var aa int = 111
fmt.Println(a, b, c, d, e, aa)
fmt.Printf("a Type is %T\n", a)
fmt.Printf("b Type is %T\n", b)
fmt.Printf("c Type is %T\n", c)
fmt.Printf("d Type is %T\n", d)
fmt.Printf("e Type is %T\n", e)
}
```
我们可以使用var aa int = 111的类似写法,也可以使用var a,b = 3,4
######(二)使用:=定义并初始化变量
```
func variableShortDeduction() {
a, b := 1, "六六六"
fmt.Println(a)
fmt.Println(b)
}
```
**总结:变量定义一般使用:=的方式定义,简单易懂!当我们在函数体外定义的变量(包内部变量,不是全局变量)的时候只能用var关键字定义**
#### 三、变量的初始化
```
func variableZreoValue() {
var a int
var b string
var bo bool
fmt.Printf("a-%d b-%q bo-%t\n", a, b, bo)
}
```
可以看到,int的初始化的值是0,string的初始化的值是空串(""),bool的初始化的值是false
#### 四、拓展fmt.Printf()函数
我们格式化的输出可以用fmt.Printf()函数进行,其函数定义为:
```
func Printf(format string, a ...interface{}) (n int, err error)
```
当然,这里有一个很重要的地方,就是我们的format string参数,我们必须使用系统提供的,以下是参数列表
(一)通用:
%v 值的默认格式表示
%+v 类似%v,但输出结构体时会添加字段名
%#v 值的Go语法表示
%T 值的类型的Go语法表示
%% 百分号
(二)布尔值:
%t 单词true或false
(三)整数:
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式:U+1234,等价于"U+%04X"
(四)字符串和[]byte:
%s 直接输出字符串或者[]byte
%q 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
%x 每个字节用两字符十六进制数表示(使用a-f)
%X 每个字节用两字符十六进制数表示(使用A-F)
#### 变量的作用域
1.在函数内部声明的变量叫做局部变量,生命周期仅限于函数内部。
2.在函数外部声明的变量叫做全局变量,生命周期作用于整个包,如果是大写的,则作用于整个程序。
#### string的两种表示:
1.双引号"":可以转义(”hello world\n“输出hello world换行)
2.反引号``(键盘中Shift+~):原样输出(`hello world\n`输出hello world\n)
**和byte表示的符号不同**
有疑问加站长微信联系(非本文作者))