GO语言入门(1)——基本语法

前言

为啥要学go呢...因为近期需要用hyperledger fabric来做一个区块链项目,决定用go来实现智能合约chaincode,所以打算学一些基本的东西,不打算太深入,谨以此系列博客来记录学习的过程。

环境搭建

https://www.cnblogs.com/itogo/p/5635596.html  百度有很多 就不详细说了

第一个GO程序

package main
import "fmt"

func main(){
   fmt.Println("hello,world")
}

package是包名 import则是导入包 func main显然就是主函数了 中规中矩的语法。

数据类型

基本类型还是那几个 不过GO1.9版本之后可以直接定义了 方便了不少。

package main
import "fmt"

func main() {
   var a = 1.5
   var b =2
   fmt.Println(a,b)
}

在此之前,声明的方式可以是:

var a = "boy♂next♂door" //隐式定义,编译器会自动识别类型
var b string = "that's good!" //显式定义
var c bool

注意类型需要放在变量后面,这一点不同于C++和java

声明多个变量时 可以是

var a1,b1,c1 string
也可以是
var (
    v1 v_type1
    v2 v_type2
)

后者多用于申明全局变量(这样写代码比较漂亮)

也可以使用:=来定义,例如:

 g, h := 123, "hello"

如果使用这种方法,要求g和h之前是未定义过的,否则会报错。

并且 你声明的变量是必须使用到的 否则也会报错,比如说:

package main

import "fmt"

func main() {
   var a string = "123"
   fmt.Println("hello, world")
}

编译时会跟你说 a declared and not used

对于不想改变的常量,可以加上const来定义,另外 const还能用作枚举:

const (
    Unknown = 0
    Female = 1
    Male = 2
)

特殊的iota,可以用作枚举,每一次出现常量时会自增1,初始值为0

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}
输出结果为
0 1 2 ha ha 100 100 7 8
运算符

没啥好讲的 跟C++基本一样

条件语句

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}

实例:

package main

import "fmt"
func main(){
    var count int
    var flag bool
    count=1
    for count < 100 {
        count++
        flag = true;
        //注意tmp变量  :=
        for tmp:=2;tmp<count;tmp++ {
            if count%tmp==0{
                flag = false
            }
        }
        if flag == true {
            fmt.Println(count,"素数")
        }else{
        continue
        }
    }
}

和C++真像啊....

switch的用法也类型,不过不用 break;

   switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D"  
   }

函数

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 
}

函数也可以返回多个值,例如说:

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

数组

定义:

var balance [10] float32

初始化:

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

不定长数组声明:

var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

指针

var fp *float32 

结构体

type Books struct {
   title string
   author string
   subject string
   book_id int
}

map

package main

import "fmt"

func main() {
   var countryCapitalMap map[string]string
   /* 创建集合 */
   countryCapitalMap = make(map[string]string)
   
   /* map 插入 key-value 对,各个国家对应的首都 */
   countryCapitalMap["France"] = "Paris"
   countryCapitalMap["Italy"] = "Rome"
   countryCapitalMap["Japan"] = "Tokyo"
   countryCapitalMap["India"] = "New Delhi"
   
   /* 使用 key 输出 map 值 */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
   
   /* 查看元素在集合中是否存在 */
   captial, ok := countryCapitalMap["United States"]
   /* 如果 ok 是 true, 则存在,否则不存在 */
   if(ok){
      fmt.Println("Capital of United States is", captial)  
   }else {
      fmt.Println("Capital of United States is not present") 
   }
}
另外一种初始化方式:
countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}

删除元素: 

delete(countryCapitalMap,"France");




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值