go语言初记
快速了解 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语言初记的更多相关文章
- tomcat&servlet初记
tomcat&servlet初记 1. web相关概念 2. web服务器软件的学习:tomcat 3. servlet入门学习 web相关概念 1,软件架构 1,cs架构:客户端/服务器端 ...
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
- Windows server 2012 添加中文语言包(英文转为中文)(离线)
Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- C语言 · 字符转对比
问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- Atitit 项目语言的选择 java c#.net php??
Atitit 项目语言的选择 java c#.net php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- InstallShield 脚本语言学习笔记
InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加. 一.基本语法规则 ...
随机推荐
- Apache Dubbo 官方正式发布 Spring 6 & Spring Boot 3 支持
Dubbo 简介 Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java.Golang 等多语言 SDK 实现.使用 Dubbo 开发的 ...
- 关于RESTful 的使用(实战)
今天在博客园首页看到一篇关于写 RESTful, 大致就是前端定义的一种规范. 原文如下, https://www.cnblogs.com/zhangmumu/p/11936262.html 看了一圈 ...
- ubuntu系统wireshark源码编译与安装
官网:https://www.wireshark.org/ 官方文档:Wireshark · Documentation 一 介绍 wireshark[1]是一款抓包工具.wireshark的GUI( ...
- Html飞机大战(十八): 模块化+项目开源
好家伙,好久好久没有更新这个系列了 为了使文档更方便阅读,使代码更容易维护,来把这个飞机大战模块化 项目已开源: https://gitee.com/tang-and-han-dynasties/ ...
- C#开发的资源文件程序(可国际化) - 开源研究系列文章
上次将小软件的线程池描述了,也将插件程序描述了,这次就将里面的资源文件相关的内容进行下记录,这里能够让程序做成国际化的形式(即多语言程序),主要就是通过这个资源文件的方式进行的处理.下面将对这个资源文 ...
- 虚拟化技术浅析第二弹之初识Kubernetes
作者:京东物流 杨建民 一.微服务架构起源 单体架构:可以理解为主要业务逻辑模块(我们编写的代码模块,不包括独立的中间件)运行在一个进程中的应用,最典型的是运行在一个Tomcat容器中,位于一个进程里 ...
- Java线程池中的execute和submit
一.概述 execute和submit都是线程池中执行任务的方法. execute是Executor接口中的方法 public interface Executor { void execute(Ru ...
- List_集合_介绍&常用方法-ArrayList集合
List_集合_介绍&常用方法 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?接下来,我们一起学习Collection中的常用几个 ...
- 重学SpringBoot. step6 SpringBoot高级技巧
SpringBoot高级技术 博客地址: step6 SpringBoot高级技巧 异步线程池 书上讲的是什么像异步操作那样,然后不需要等待. 问题是,不需要等待,但数据在生成的时候的时间并不能省. ...
- 字符串、函数、bug
字符串 字符串驻留机制 仅保存一份相同且不可变字符串的方法,不同的值别存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续穿件相同的字符串时,不会开辟新的空间,而是把字符串 ...