三鑫西瓜霜

 

【Go】Go学习笔记(二) GO的基础知识

hello.go

package main
//第一行代码 package main 定义了包名。
//你必须在源文件中非注释的第一行指明这个文件属于哪个包
import "fmt"
// import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包
// fmt 一个包含了I/O的函数
func main() {
    fmt.Println("Hello, World!")
}

标识符

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

运行go文件

go run 

go build     //生成二进制文件

go的语法规则1

 { 不能单独放在一行

func main() {

}

上面的函数格式是对的,下面的函数格式是错的

func main() 

{

}

ps:让我觉得和node.js中vue.js的语法要求一样严格

 字符串连接

Go语言的字符串可以通过 + 连接

格式化字符串

格式化字符串是在编译过程中,允许编码人员通过特殊的占位符,将相关对应的信息整合或提取的规则字符串。

Go 语言中使用 fmt.Sprintf 格式化字符串并赋值给新串

package main

import (
    "fmt"
)

func main() {
   // %d 表示整型数字,%s 表示字符串
    var stockcode=123
    var enddate="2020-12-31"
    var url="Code=%d&endDate=%s"
    var target_url=fmt.Sprintf(url,stockcode,enddate)
    fmt.Println(target_url)
}
//输出结果
//
Code=123&endDate=2020-12-31

 Go语言的数据类型

布尔型bool

数字型int、float32、float64

字符串类型

派生类型:指针、数组、结构体、Channel(管道)、函数、切片、接口、Map

 Go语言变量

 变量声明形式: 

var identifier type

var identifier1, identifier2 type

// identifier 标识符

不允许无用变量存在。除了全局变量以外。

package main
import "fmt"
func main() {
    var a string = "hello"
    fmt.Println(a)
    var b, c int = 1, 2
    fmt.Println(b, c)
}

 第一种,指定变量类型,如果没有初始化,则变量默认为零值。

 第二种,根据值自行判定变量类型。

 第三种,:=  //只能在函数体中出现

// intVal := 1 相等于:
var intVal int 
intVal =1 
package main

var x, y int
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

值类型和引用类型

 通过&i来获取变量i的内存地址。值类型的变量的值存储在栈中。

 空白标识符 _ 也被用于抛弃值

package main
import "fmt"
func main() {
    var _, a int = 5, 7
    fmt.Println(a)
}
// 结果只会输出7

并行赋值也被用于当一个函数返回多个返回值时,比如这里的 val 和错误 err 是通过调用 Func1 函数同时得到:val, err = Func1(var1)

常量的定义格式:

const idenyifier [type] = value

[type]的内容可以省略,又编译器根据变量的值来推断其类型。

// 常量的枚举
const (
    Unknown = 0
    Female = 1
    Male = 2
)

// 常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过

package main

import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)

func main(){
    println(a, b, c)
}

iota特殊常量

可以认为是一个可以被编译器修改的常量。

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使IOTA计数一次。

select条件语句

select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。

select 会循环检测条件,如果有满足则执行并退出,否则一直循环检测。

Go语言函数

func function_name( [parameter list] ) [return_types] {
   函数体
}
/* 函数返回两个数的最大值 */
func max(num1, num2 int) int {
   /* 声明局部变量 */
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result
}

函数返回多个值

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}

func main() {
   a, b := swap("Google", "Runoob")
   fmt.Println(a, b)
}

Go语言函数闭包

Go语言函数方法

 

 

 

Go 语言结构 | 菜鸟教程 (runoob.com)

posted on 2021-10-08 20:53  三鑫西瓜霜  阅读(103)  评论(0)    收藏  举报

导航