快速了解 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. 【译】2022 年回顾:Web 性能有哪些新变化?

    原文地址:https://www.debugbear.com/blog/2022-in-web-performance 若对文中提到的一些性能参数不太熟悉,可以参考我之前的一篇博文<性能参数和优 ...

  2. 数值计算:前向和反向自动微分(Python实现)

    1 自动微分 我们在<数值分析>课程中已经学过许多经典的数值微分方法.许多经典的数值微分算法非常快,因为它们只需要计算差商.然而,他们的主要缺点在于他们是数值的,这意味着有限的算术精度和不 ...

  3. Linux 环境中使用 LVGL

    之前有记录过在 esp32 中使用 LVGL 的笔记,需要的小伙伴可以了解一下,esp-idf 移植 lvgl8.3.3 我之前整理的学习资料:https://www.cnblogs.com/jzcn ...

  4. Java基础篇——多线程

    创建线程的三种方式 1.继承Thread类 2.实现Runnable接口 3.实现Callable接口 继承Thread类 public Test extends Thread{ public voi ...

  5. JS逆向之补环境过瑞数详解

    JS逆向之补环境过瑞数详解 "瑞数" 是逆向路上的一座大山,是许多JS逆向者绕不开的一堵围墙,也是跳槽简历上的一个亮点,我们必须得在下次跳槽前攻克它!! 好在现在网上有很多讲解瑞数 ...

  6. IDEA 2022.1.3 配置 Tomcat 模板

    本地运行 Tomcat 首先,下载得到 Tomcat 压缩包 选择合适的位置解压,路径不要有中文和空格 结构如下所示 目录结构说明: bin 可执行文件目录 conf 配置文件目录 lib 存放lib ...

  7. pytorch 配置详细过程

    torch github 项目多 方便,api好调用 cpu版本 装torch 安装最新版本的就可以. torchvision 要版本对应 算法: torchvision版本号= torch版本号第一 ...

  8. .Net6 使用 Ocelot + Consul 看这篇就够了

    前言 卯兔敲门,新的一年,祝大家前'兔'似锦!希望大家假后还能找到公司的大门 O(∩_∩)O !书接上文,我们使用了 Consul实现了服务注册与发现,对Consul不熟悉的同学可以先看看.这篇文章我 ...

  9. Dubbo 入门系列之快速部署一个微服务应用

    本文将基于 Dubbo Samples 示例演示如何快速搭建并部署一个微服务应用. 背景 Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力.如上图所示,Dubbo 的 ...

  10. Python修改柱状图边缘柱子与图边界的距离

      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图.条形图最两侧的柱子与图像边缘之间距离的方法.   最近,绘制了一个水平的柱状图,但是发现图的上.下边距(不是柱子与柱子 ...