美文网首页
C++程序员的go学习之路(1)——语法

C++程序员的go学习之路(1)——语法

作者: 丑角的晨歌 | 来源:发表于2018-08-07 20:54 被阅读0次

(1) package、import、init函数

  • package跟import其实跟java里面的概念差不多,go的话保留了两个函数:init与main。
  • 每个package里可以写任意多个init,但从可读性的角度说,建议每个文件中只写一个init函数。同一个包中的多个init函数的执行顺序没有明确的说明。
  • init不能被其他函数调用,而是在main执行之前被自动调用。
  • 不同包的init函数根据包导入的依赖关系决定执行顺序,如下图。


  • 同一个包如果被其他包导入了多次,那么它只会导入一次。
import(
. "fmt"  //点的含义是你以后调用这个包的函数时可以省略包名
)
import(
f "fmt"  // 别名,可以使用f.Println("hello world")
)
import (
_ "github.com/somepackage"  // 只调用了该包的init函数,不使用包里面的函数
)

(2) 函数、变量声明、作用域

// 声明函数:go中的函数可以返回多个变量
func function_name([parameter list]) [return_types] {
  // 函数体
}
// 举例:
func swap(x, y string) (string, string) {
  return y,x
}

var v_name v_type  // 指定变量类型
var v_name = value  // 根据值自行判断类型
v_name := value // 初始化声明,不能用于全局变量,此时左侧的变量不应该是已经声明过的
// 也可以同时声明多个变量
var vname1, vname2, vname3 type
var vname1, vname2, vname3 = v1, v2, v3
vname1, vname2, vname3 := v1, v2, v3

var (
  vname1, v_type1
  vname2, v_type2
)
_ //空标记占位符,通过将函数返回值赋值给空标记,可以避免提示未使用的变量
  • 全局作用域:所有的关键字、内置类型、函数
  • package作用域:一个包中声明的变量、常量、函数、类型等在同一个包中可以任意访问
  • 文件作用域:一个文件中通过import导入的包名,只在当前文件有效
  • 函数作用域、for、if、{}自定义作用域:函数的参数返回值拥有函数作用域,for、if、{}内部的变量只拥有最小作用域

(3) 流程控制

if...else...
其实跟C++基本一样,差别在括号可以省略,直接写成if a<20这样。不过你要习惯把括号加上也是没问题的;
switch
与C++差别在于每个case不需要加break,默认就会break;如果需要继续往下走的效果可以显式使用fallthrough;
select
这个语法与switch比较类似,每个case必须是一个通信操作,允许有default子句;一般用于让程序线程在多个channel的操作上等待,待以后详细了解channel后再学习;
for
有三种形式,与C语言的for一样,或者与C中的while一样,或者根据range遍历:
for init; condition; post {}
for condition {}
for key,value := range {}
break与continue等的使用也基本一致;

(4) 类型转换

type_name(expression)

var sum int = 17;
var count int = 5;
var mean float32

mean = float32(sum) / float32(count)

(5) 指针

基本同C
注意go中的函数传参均为值传递,所以如果需要在函数内修改传入的变量的话就需要通过指针进行;
虽然slice/map/channel等部分类型为引用类型,但是做为函数参数时仍为值传递,虽然也存在一些特殊之处。
关于slice类型做为参数时情况的理解可见以下链接:
https://blog.csdn.net/future_challenger/article/details/48438017
https://www.jb51.net/article/136199.htm

相关文章

  • go 基础学习

    1 go 基础go 语法基础go 官方资料如果由C ,C++ 基础, 学习go 比较容易,本文学习go ,主要是为...

  • C++程序员的go学习之路(1)——语法

    (1) package、import、init函数 package跟import其实跟java里面的概念差不多,g...

  • C/C++学习路线图--Go语言微服务

    黑马程序员的C/C++学习路线图大纲中第七阶段的学习是Go语言微服务的学习:主要介绍了C/C++学习路线图的Go语...

  • Go语言介绍

    Go语言为并发而生 简单易学语法简洁Go 语言简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的...

  • Java 的特点

    语法简单 Java 语言的语法与 C/C++语言十分接近,这样大多数程序员可以很容易地学习和使用 Java。另外,...

  • go语言的++/--操作

    go语言的++/--操作 C/C++程序员的窘境 C/C++程序员在面试的时候经常会被面试官问到++/--的问题而...

  • go语言有哪些优势

    1、学习曲线容易 Go语言语法简单,包含了类C语法。因为Go语言容易学习,所以一个普通的大学生花几个星期就能写...

  • golang的并发模型

    1. C/C++ 与 Go语言的“价值观”对照 C的价值观摘录 相信程序员:提供指针和指针运算,让C程序员天马行空...

  • JAVA 程序初体验

    Java语⾔特性 易学:Java语⾔的语法与C语⾔和C++语⾔很接近,使得⼤多数程序员很容易学习和使⽤Java ⾯...

  • C++学习笔记 day 1

    C++学习笔记 day 1 教学课程链接:bilibili 黑马程序员:C++从0到1入门编程[https://w...

网友评论

      本文标题:C++程序员的go学习之路(1)——语法

      本文链接:https://www.haomeiwen.com/subject/utdtvftx.html