Go语言Hello World(2)

目录

导入包

下划线标识符

init函数

格式化输出

Go语言的分号


Go 语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释

 

package main


import (
    "fmt"
    "database/sql"
    _ "github.com/go"
)

func init() {
    sql.Register("postgres", new(PostgresDriver))
}

func main() {
	fmt.Println("Hello World!");fmt.Println("Hello go!")
}

package main:这句是包声明

Go语言必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。main 包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在 main 里的 main 函数 也很特殊,它是整个程序执行时的入口(C系语言差不多都这样)。 main 函数所做的事情就是程序做的。

Go语言的代码通过包(package)组织,包类似于其它语言里的库(libraries)或者模块(modules)。一个包由位于单个目录下的一个或多个.go源代码文件组成, 目录定义包的作用。必须恰当导入需要的包,缺少了必要的包或者导入了不需要的包,程序都无法编译通过。(Go语言编译过程没有警告信息,也是争议特性之一)这项严格要求避免了程序开发过程中引入未使用的包。Go的标准库提供了100多个包,以支持常见功能,如输入、输出、排序以及文本处理。比如 fmt 包,就含有格式化输出、接收输入的函数。 

导入包

import (
	"fmt"//导入包,如果导入的包不止一个可以这么写
)

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

Go 语言的包引入一般为: 项目名/包名,方法的调用为:包名.方法名()

import "test/controllers"

controllers.Test()//导入包方法的调用

下划线标识符

代码中 _ "github.com/go" 导入的路径前面有一个下划线,这个技术是为了让 Go 语言对包做初始化操作,但是并不使用包里的标识符,为了让程序的可读性更强,Go 编译器不允许声明导入某个包却不使用。下划线让编译器接受这类导入,并且调用对应包内的所有代码文件里定义的 init 函数。

另一个作用是充当占位符,占据了保存 range 调用返回的索引值的变量的位置。如果要调用的函数返回多个值,而又不需要其中的某个值,就可以使用下划线标识符将其忽略。

for _, feed := range feeds {}

init函数

每个包可以包含任意多个 init 函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的 init 函数都会安排在 main 函数之前执行。init 函数用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。以数据库驱动为例,database 下的驱动在启动时执行 init 函数会将自身注册到 sql 包里,因为 sql 包在编译时并不知道这些驱动的存在,等启动之后 sql 才能调用这些驱动。

格式化输出

%d十进制整数
%x,%o,%b十六进制,八进制,二进制
%f,%g,%e浮点数:3.141593   3.141592653589793   3.141593e+00
%t布尔:true或false
%c字符(rune)(Unicode码点)
%s字符串
%q带双引号的字符串 “abc” 或带单引号的字符 ‘c’
%v变量的自然形式(narural format)
%T变量的类型
%%字面上的百分号标志
o := 0666
fmt.Printf("%d %[1]o %#[1]o\n", o) // "438 666 0666"
x := int64(0xdeadbeef)
fmt.Printf("%d %[1]x %#[1]x %#[1]X\n", x)// 3735928559 deadbeef 0xdeadbeef 0XDEADBEEF

//%之后的 [1] 告诉Printf函数再次使用第一个操作数。第二,%后
//的 # 告诉Printf在用%o、%x或%X输出时生成0、0x或0X前缀。

Go语言的分号

Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句。实际上,编译器会主动把特定符号后的换行符转换为分号, 因此换行符添加的位置会影响Go代码的正确解析(比如行末是标识符、整数、浮点数、虚数、字符或字符串文字、关键字 break 、 continue 、 fallthrough 或 return 中的一个、运算符和分隔符 ++ 、 -- 、 ) 、 ] 或 } 中的一个)。举个例子, 函数的左括号 { 必须和 func 函数声明在同一行上,且位于末尾,不能独占一行,而在表达式 x + y 中,可在 + 后换行,不能在 + 前换行(以+结尾的话不会被插入分号分隔符,但是以x结尾的话则会被分号分隔符,从而导致编译错误)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值