快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墙)

下面记录下了解go的过程,特别记录下与你脑子里原有“观念”不同的地方:

1.  声名 初始化,类型在后面,不一样

var a, b int 

var a,b =1,2

var c, python, java = true, false, "no!" a,b:=func fname(string,string) //非声明,必须在func使用

短声明变量

函数中,`:=` 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。

函数外的每个语法块都必须以关键字开始(`var`、`func`、等等),`:=` 结构不能使用在函数外。

2.函数返回多个值

func swap(x, y string) (string, string) {  //x, y string 等价  x sring ,y string
  return y, x 
}

命名返回值

func swap(string, string) (x, y string) { #返回值分别命名为x,y 
  x= x+12
  y= y+1
  return 
} // 空return实际返回的是x,y

3.对于声明了但没使用的变量,引入但没有使用的包,会引发错误,  go可以自动格式化源码

func 函数体的第一个'{'必须在同一行(?试了不在一行格式不行,运行出错)

4.包

每个 Go 程序都是由包组成的。

程序运行的入口是包 `main`。

package main

import (
"fmt"
"math/rand"
) func main() {
fmt.Println("My favorite number is", rand.Intn(10)) //先不管rand.Intn干什么的,按照惯例,包名与导入路径的最后一个目录一致。例如,`"math/rand"` 包由 package rand 语句开始
}

注意:导出名

在导入了一个包之后,就可以用其导出的名称来调用它。

在 Go 中,首字母大写的名称是被导出的。(算是一种惯例/约定,如python里_function _varname是私有一样)

package main

import (
"fmt"
"math"
) func main() {
fmt.Println(math.pi)
}

Foo 和 FOO 都是被导出的名称。名称 foo 是不会被导出的 ,所以math.pi肯定不存在,可能Pi是存在的

 

5.基本类型

Go 的基本类型有Basic types

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr byte // uint8 的别名 rune // int32 的别名
// 代表一个Unicode码 float32 float64 complex64 complex128

package main

import (
"fmt"
"math/cmplx"
) var ( //这样用很特别
ToBe bool = false
MaxInt uint64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
) func main() {
const f = "%T(%v)\n"
fmt.Printf(f, ToBe, ToBe) //bool(false)
     fmt.Printf(f, MaxInt, MaxInt) //uint64(18446744073709551615)
fmt.Printf(f, z, z)       //complex128((2+3i)) 不懂
}

6.类型转换 不同类型间转换需要显式进行,即使从int往int64转也得显式 (c是可以隐式转换的,溢出不提示)

7.循环只有for ,没有 while ,通过省略for的首尾式可以做到while一样的事 :for i < 10 {}

go语言初记的更多相关文章

  1. tomcat&servlet初记

    tomcat&servlet初记 1. web相关概念 2. web服务器软件的学习:tomcat 3. servlet入门学习 web相关概念 1,软件架构 1,cs架构:客户端/服务器端 ...

  2. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  3. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  4. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  5. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  6. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  7. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  8. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

  9. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  10. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

随机推荐

  1. JUC基础学习笔记

    JUC的理解: JUC即java.util .concurrent工具包的简称.从JDK 1.5 开始出现,主要用于处理多线程.高并发问题. 多线程的三大特征解析 原子性.可见性.有序性 1.原子性: ...

  2. Base58算法加密解密(Python实现)

    def b58encode(tmp:str) -> str: tmp = list(map(ord,tmp)) temp = tmp[0] base58 = "123456789ABC ...

  3. [论文总结] kmeans聚类和WGCNA

    kmeans聚类和WGCNA 文章目录 kmeans聚类和WGCNA 论文1 论文2 论文3 总结 总结了3篇论文中kmeans聚类和WGCNA的运用. 论文1 Comprehensive disse ...

  4. [编程基础] C++多线程入门10-packaged_task示例

    原始C++标准仅支持单线程编程.新的C++标准(称为C++11或C++0x)于2011年发布.在C++11中,引入了新的线程库.因此运行本文程序需要C++至少符合C++11标准. 文章目录 10 pa ...

  5. Java解题练习

    Java解题练习 1.A+B问题   解题代码: import java.util.*; public class Main { public static void main(String[] ar ...

  6. 小H的小屋

    题解 [NOI2004]小H的小屋 前记 又鸽了好久,这回可要努力更新了 2019.6.2,痛下杀心,把电脑上所有的游戏都删掉了,提前160天奋力备考NOIP.目标:A类省队! 我是传送门 题解 这道 ...

  7. CF构造题1600-1800(2)

    H. Hot Black Hot White(COMPFEST 14 - Preliminary Online Mirror (Unrated, ICPC Rules, Teams Preferred ...

  8. Consumer接口-Consumer接口的默认方法andThen

    Consumer接口 java.util.function.Consumer<T〉接口则正好与Supplier接口相反,它不是生产一个数据,而是消费一个数据,其数据类型由泛型决定. 抽象方法:a ...

  9. 练习_使用递归计算1-n之间的和-练习_使用递归计算阶乘

    练习_使用递归计算1-n之间的和 定义一个方法,使用递归计算1-n之间的和 1+2+3+. . .+n n+(n-1)+(n-2)+...+1 已知: 最大值:n 最小值:1 使用递归必须明确: 1. ...

  10. Java语言的跨平台性-JDK,JRE和JVM

    Java语言的跨平台性 1 Java虚拟机--JVM JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的 运行环境, ...