> For the complete documentation index, see [llms.txt](https://jun-wang.gitbook.io/learnjava/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jun-wang.gitbook.io/learnjava/bian-cheng-yu-yan/go/go-yu-yan-zhi-shi-dian.md).

# Go语言知识点

## 1. 大小写控制访问权限

当标识符（包括常量、变量、类型、函数名、结构字段等等）以一个大写字母开头，如：Group1，那么使用这种形式的标识符的对象就可以被外部包的代码所使用（客户端程序需要先导入这个包），这被称为导出（像面向对象语言中的 public）；标识符如果以小写字母开头，则对包外是不可见的，但是他们在整个包的内部是可见并且可用的（像面向对象语言中的 protected ）。

## 2. { 不能放在单独的一行

**{** 不能单独放在一行，不然运行时会产生错误：

```
# command-line-arguments
./hello.go:3:6: missing function body
./hello.go:4:1: syntax error: unexpected semicolon or newline before {
```

## 3. 行分隔符

在 Go 程序中，一行代表一个语句结束。每个语句不需要像 java一样以分号 ; 结尾，因为这些工作都将由 Go 编译器自动完成。如果你打算将多个语句写在同一行，它们则必须使用 ; 人为区分，但在实际开发中我们并不鼓励这种做法。

## 4. 空白标志符

空白标识符在函数返回值时的使用：

```go
package main

import "fmt"

func main() {
  _,numb,strs := numbers() //只获取函数返回值的后两个
  fmt.Println(numb,strs)
}

//一个可以返回多个值的函数
func numbers()(int,int,string){
  a , b , c := 1 , 2 , "str"
  return a,b,c
}
```

输出结果：

```
2 str
```
