// package main 和 main 函数
package main
func main() {} //每一个.go文件都需要有 package 关键词,并且声明在文件顶部
package pkgName // import 用来导入依赖包
import "name" // 常量定义 - const NAME type = value
const NAME string = "xiaoming" // 全局变量的定义 - var ...
var name string = "xiaohei" // 一般类型声明(定义变量的类型) - type ...
type learn string // 声明结构
type Learn struct {
// ...
} // 声明接口
type Learn interface // 函数的定义
func fn () {}

package

package是最基本的分发单位和工程管理中依赖关系的体现;

源文件开头需要声明package;

要生成可执行程序,要有package main 和 main函数;

同一个路径要只能有一个package

import

 // 方式一
import "package1"
import "package2"
import "package3" // 方式二
import (
"package1"
"package2"
)

原理:
  import 导入,是按顺序导入;
  导入包中含有其他依赖包,会先导入依赖包,初始化其中的常量和变量,如果有init函数,还会执 行init();

所有包导入完成后,才会对main中和常量和变量进行初始化,如果main中有init函数,先执行init(),在执行main函数;

一个包被导入多次,但实际只会导入一次;

import _ "pkg" 会导入该包,但不会执行整个包,而是执行包中的init函数(简单点说,就是这样做会到时自动执行包的init(),注册包引擎,关于这个包就无需其他操作了);

import . "pkg" 可以不加包名,直接方法

别名用法:
  import alias "pkg"

数据类型

1.  数值类型(整型、浮点型、复数、其他)、字符串类型、布尔类型

2. 派生类型

指针类型(Pointer)

数组类型

结构化类型(struct)

Channel类型 (chan)

函数类型(func)

切片类型(slice)

借口类型(interface)

Map类型(map)

3. 类型零值和类型别名
      类型零值:变量被声明之后的默认值

不同类型的变量是不能进行运算的

unsafe包

unsafe 库让 golang 可以像C语言一样操作计算机内存(不推荐使用此包)

type ArbitraryType int

type Pointer *ArbitraryType

func Sizeof(x ArbitraryType) uintptr

func Offsetof(x ArbitraryType) uintptr

func Alignof(x ArbitraryType) uintptr

常量声明

// 显式
const name type = value // 隐式(无类型常量)
const name = value // * 常量只支持数值、布尔、字符串类型

变量声明

// 单个声明
var name [type] = value // 多个声明
var a, b, c [type] = v1, v2, v3
//简写
a, b := v1, v2 // 分组声明
var (
a [type]
b [type]
c [type]
)

全局变量必须使用var声明 | 特殊变量使用下划线

类型转换

// 类型转换必须是显示的
// 类型转换只能发生在两种兼容类型之间
var a = 1
var b float32
b = float32(a)

变量可见性规则

大写字母开头的变量是公有变量,可以被其他包读取

小写字母开头的变量是私有变量

流程语句

// if - else
if a > 0 {} if a > 0 { } else { }
switch name {
case v1:
..
case v2:
..
default:
..
}
for init; condition; post {}

// 待续

Go 基础(非常基础)的更多相关文章

  1. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  2. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  3. [.net 面向对象编程基础] (5) 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

  4. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  5. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  6. [.net 面向对象编程基础] (8) 基础中的基础——修饰符

    [.net 面向对象编程基础] (8) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改 ...

  7. JavaScript基础---语言基础(1)

    写在前面: 通过四篇博客把JS基础中的基础整理一下,方便自己查阅,这些内容对于实际项目开发中也许并不会在意,但是作为JS的语言基础,自觉还是应该熟悉.在完成这三篇博客(JavaScript基础---语 ...

  8. jQuery基础---Ajax基础教程

    jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax ...

  9. Java基础(2)-基础类型

    java基础类型 基础类型 package knowledge.base; public class Properties { /** * 整型 * int 4字节 -2 147 483 648 ~2 ...

  10. 第二十五节:Java语言基础-面向对象基础

    面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...

随机推荐

  1. sudo执行提示Command not found

    运行一命令在普通用户下可行,切换到root用户依然可行,但在普通用户下使用sudo执行时,提示Command not found. 修改/etc/sudoers文件,找到类似下面的一行: Defaul ...

  2. 20145239杜文超 《Java程序设计》第1周学习总结

    20145239<Java程序设计>第1周学习总结 教材学习内容总结 第一周. 通过教材简单的了解了java的历史.因为之前看过视频,所以有一个大致明了的认识. 识记了Java三大平台:J ...

  3. GPIO设备虚拟文件结点的创建【转】

    本文转载自:http://blog.csdn.net/dwyane_zhang/article/details/6742066 所谓GPIO设备虚拟文件结点,就是方便用户在应用程序直接操纵GPIO的值 ...

  4. Linux常用命令全集

    一,安装和登陆命令1,进入图形界面 startx 2,进入图形界面 init 5 3,进入字符界面 init 34,登陆 login 5,关机 poweroff -p 关闭机器的时候关闭电源-n 在关 ...

  5. 每天一个linux命令(4):pwd命令

    版权声明更新:2017-05-08博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下命令cd. 2 开发 ...

  6. BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划

    BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...

  7. codevs 1531山峰

    传送门 1531 山峰  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东 ...

  8. 字典树Trie的使用

    1. Trie树介绍 Trie,又称单词查找树.前缀树,是一种多叉树结构.如下图所示: 上图是一棵Trie树,表示了关键字集合{“a”, “to”, “tea”, “ted”, “ten”, “i”, ...

  9. poj1734Sightseeing trip——无向图求最小环

    题目:http://poj.org/problem?id=1734 无向图求最小环,用floyd: 在每个k点更新f[i][j]之前,以k点作为直接连到i,j组成一个环的点,这样找一下最小环: 注意必 ...

  10. Windows下Anaconda安装 python + tensorflow

    下载安装Anaconda 首先下载Anaconda,可以从清华大学的镜像网站进行下载. 安装Anaconda,注意安装时不要将添加环境变量的选项取消掉. 安装完成之后,在安装目录下cmd,输入 con ...