[学] GO 语言学习笔记(一)

1. 变量

  var  <名称>   类型

2. 初始化

  var v1 int  = 10

  v3 := 10    // v3 不可以是已经声明过的变量

3. 忽略返回值

  _, _, Nick = GetName()

4. 常量 & iota

  const Pi   float64 = 3.1415

  const (

    size  int64 = 1024

    eof = -1

  )

  const  a, b, c = 3, 5, "XX"

  const (

    v1 = 1 << iota

    v2

    v3

  )    // iota 在下一个 const 之前, 从 0 开始递增

    

5. os.GetEnv("HOME")

6.大写开头,包外可见

7. uintptr

  浮点比较 -- 使用精度差

8. 复数

  v = Complex(3.1, 3.2)

  real(v) == 3.1

  imag(v) == 3.2

9.字符串,不能以 [x] 的方式赋值

10. 字符串类型

  byte   --- uint8

  rune  ---- Unicode 字符

11. 数组声明

  var   array_ex   [32]byte  =  [32]byte { 1, 2, ... }

  len()

  为值类型,在 fun 内部修改,不影响 fun 外部值

12. 数组切片

  var  myS  []int  = array_ex[:5]

  var  mySl = make([]int, 5)

  mySli := []int{1, 2, 3}

13. len / cap / append

  len(slice) = 元素个数

  cap(slice) = 已经分配的内存

  .append()

  myS = append(myS, 1, 2, 3)

  myS2 := []int{8, 9, 10}

  myS3 = append(myS, myS2...)    /// 打散 myS2 , 以多个元素加入  , append 参数需求

14.copy()

  copy(s1, s2)    // 以较小者来决定复制的大小

15.

  map

  var personDB  map[string] PersonInfo

  personDB = make(map[string] PersonInfo)

  personDB["123"] = PersonInfo{"123", "Tom", "Room 203"}

  

  person, ok := personDB["123"]

  if ok XXX

  myMap = make(map[string] PersonInfo, 100)

  delete(myMap, "123")

16.

  if  return else return

  需要一个最终的 return

17. fallthrough

  switch  X  {

    case 0:

    ....

    fallthrough   // 继续 case

    default:

  }

18. for { 无限循环

  没有 while 语句

19.  goto

20. 函数

  func  <func-name>  (var ...)  (ret ...) { ...

21. 不定参数

  func  myFunc(args  ...int)  {

    for  _, arg  :=  range  args {

    }

  }

  调用

  myFun ( [] int {1, 2, 3, 5} )

  参数传递:

    fun  A ( args  ...int) {

      B(args...)

      C(args[1:]...)

    }

22. 任意类型

  func  Printf(format string,  args  ...interface{}) {

  func  MyPrint ( args  ...interface {} ) {

    for  _, arg  :=  range  args {

      switch   arg.(type)  {

        case  int:

        case  string:

        default:

      }

    }

  }

23. 多返回值

  携带 Error

  _ : 忽略返回值

24. 匿名函数

  f := func (  a, b  int,  z  float64)  bool {

  }

  func  ( ch  chan  int)  {

    ch <- ACK

  }( reply_chan)

25. 闭包

  func   main() {

    var j  int  = 5

    a :=  func( ) ( func() ) {  // 参数为空,返回值为一个函数

      var  i  int  = 10

      return  fun()  {

      } ()

    }

    a ()

    j *= 2

    a ()

26. errno

27.  defer  fun ()  { // 做复杂的清理工作

    // 无论怎样都会被调用

28.  panic ()    recover()

  panic () 立即终止,返回调用 , defer 会被调用

  recover()  处理 panic 异常

    defer  func() {

      if   r := recover(); r != nil {

        log.Printf("Return : %v", r)

      } ( )

    }

29. flag 包   : 命令行参数解析

  X = flag.String(" ... ")

  flag.Parse()    // 在 main 里调用, 参数解析到的值到  X 里

  

30. file, err  := os.Open(  )

  defer  file.Close()

  values = make( []int, 0)

  for  {

    line, isPrefix, err1 := br.ReadLine()

      err1 != nil;  err1 != io.EOF

  }

  str := string(line)

  value, err1 := strconv.Atoi(str)

  if err1 != nil ...

    values = append(values, value)

31. func  writeValues( values  [] int,  outfile  string)

  file, err  := os.Create( outfile )

  str := strconv.Itoa( value)

32. file, err := os.Open(infile)

  defer  file.Close()

  br := bufio.NewReader(file)

  line, isPrefix, err1 := br.ReadLine()

      err1 != nil, err1 != io.EOF

  t1 := time.Now()

时间: 2025-01-04 07:45:03

[学] GO 语言学习笔记(一)的相关文章

R语言学习笔记

參考:W.N. Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on R: A Programming Environment for Data Analysis and Graphics,2003. http://bayes.math.montana.edu/Rweb/Rnotes/R.html 前言:关于R 在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data

C语言学习笔记frist---输入两个数比较大小

C#学习中,问道艰辛,今自C学起,第一个函数学习:输入两个数比较大小,仅作练习: #include "stdafx.h" #include<stdio.h> // 包含stdio.h头文件 int max(int, int); // 函数声明 int main(){ int a,b; // 声明两个整型变量 printf("input two integer:");// 以空格为分隔 scanf("%d %d",&a,&

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

R语言学习笔记2——绘图

R语言提供了非常强大的图形绘制功能.下面来看一个例子: > dose <- c(20, 30, 40, 45, 60)> drugA <- c(16, 20, 27, 40, 60)> drugB <- c(15, 18, 25, 31, 40) > plot(dose, drugA, type="b") > plot(dose, drugB, type="b") 该例中,我们引入了R语言中第一个绘图函数plot.pl

Go语言学习笔记(一) : 搭建Windows下的Go开发环境

最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布,并且不依赖任何虚拟机(其实是打包在exe里面了),这种好语言怎么能够错过?所以便一时兴起,开始学习了起来.由于本人还处于异常小白的阶段,所以文章中可能不免有些错误,欢迎大家各种指正. 安装Go 前往Go语言的官方网站:http://golang.org/, 下载对应平台的安装包.如果是x86的系统可

Perl语言学习笔记 15 智能匹配与give-when结构

1.智能匹配操作符 替代绑定操作符: 在哈希中查找某一个键: 比较两个数组是否完全相同: 查找列表中是否存在某个元素: 智能匹配操作符与顺序无关,~~ 左右元素可以互换 2.智能操作符优先级 3.given语句 相当于c语言的switch语句 4.given可以测试多个条件,在default前用break,否则会导致default一直执行 5.笨拙匹配(正则表达式方式) 6.多个项目的when匹配 可以在语句中间加上其他语句: Perl语言学习笔记 15 智能匹配与give-when结构,布布扣

Perl语言学习笔记 day 1

1.Perl Practical Extraction and Report Language:实用摘录与报表语言 2.多行注释 (1) =需要顶格写 = description statement; =cut (2)末尾的description需要顶格写 <<description; print "Hello,world!\n"; description 3.数字: 所有数字在Perl内都以双精度浮点数格式存储; 5**3:5*5*5: 4.字符串: 最短的字符串为空字符