Go语言基础工程目录如下(采用LiteIDE):

备注:需要提前设置GOPATH,即工作目录,bin、pkg、src为默认的GO工程目录结构。GOPATH可以支持多个,在windows下配置在环境变量里,以;分割。

go install com.fredric\lib 命令编译库

go install com.fredric\main 命令编译出执行文件main.exe

实际项目中运用了GO语言,抽时间夯实基础,在lib中实现了一些测试函数,如下:

1、集合相关

package lib

import (
"fmt"
) //测试数组
func ArrayTest() {
var array = []uint8{, , }
var i int = for i = ; i < len(array); i++ {
fmt.Printf("array %d Element:%d\n", i, array[i])
}
} //测试结构体
type User struct {
UserName string
PassWord string
} func StructTest() {
var user1 User
user1.UserName = "Fredric"
user1.PassWord = "Sinny" fmt.Printf("UserName: %s And Password %s\n", user1.UserName, user1.PassWord) //结构体指针
var pUser1 *User
pUser1 = &user1
fmt.Printf("UserName: %s And Password %s\n", pUser1.UserName, pUser1.PassWord)
} //测试切片
func SliceTest() {
//切片可以理解为可变数组
var slice1 []uint8 = make([]uint8, , )
//5为初始长度、10为容量,容量是可选参数,初始值为0
fmt.Printf("slice1:%v Len:%d Cap:%d\n", slice1, len(slice1), cap(slice1)) //此时LEN和CAP都为6
slice1 = []uint8{, , , , , }
fmt.Printf("slice1:%v Len:%d Cap:%d\n", slice1, len(slice1), cap(slice1)) //切片可以超出容量
var array = []uint8{, , , , , , , , , , }
slice1 = array
fmt.Printf("slice1:%v\n", slice1)
//打印结果为3,4,5
fmt.Printf("slice1 2:5 %v", slice1[:])
array[] =
//数组的值修改后,切片的值也对应修改,此时slice1[0] = 11
//因此slice是一个指针,指向那段数据内存
fmt.Printf("slice1:%v [0]:%d\n", slice1, slice1[]) //此时slice1尾部增加0,0两个元素,len = 13 CAP = 32
//注意:为什么此处CAP比len大那么多,因为在Slice上追加元素的时候,首先会放到这块空闲的内存中,
//如果添加的参数个数超过了容量值,内存管理器会重新划分一块容量值为原容量值*2大小的内存空间
slice1 = append(slice1, , )
fmt.Printf("slice1:%v Len:%d Cap:%d\n", slice1, len(slice1), cap(slice1)) newSlice := make([]uint8, len(slice1), cap(slice1))
copy(newSlice, slice1)
fmt.Printf("newSlice:%v Len:%d Cap:%d\n", newSlice, len(newSlice), cap(newSlice))
} //测试MAp
func MapTest() {
var myMap map[uint8]string myMap = make(map[uint8]string)
myMap[] = "fredric"
myMap[] = "sinny" for item := range myMap {
fmt.Printf("No[%d] Element Is %s\n", item, myMap[item])
} item, res := myMap[]
fmt.Printf("%s %t\n", item, res) delete(myMap, )
item, res = myMap[]
fmt.Printf("%s %t\n", item, res)
}

2、函数相关

package lib

import (
"fmt"
) //多个参数多个返回值
func test01(param1 string, param2 uint8) (string, bool) {
fmt.Printf("Param1 = %s, Param2 = %d\n", param1, param2)
return "result", true
} //测试函数特性
func FuncTest() {
//res1, res2 := test01("hello,world", 6)
//fmt.Println(res1, res2) //打印输出24
fmt.Println(Factorial())
} //菲波那切数列的递归函数
func Factorial(x int) (result int) {
if x == {
result =
} else {
result = x * Factorial(x-)
}
return
}

3、面向对象相关

package lib

import (
"fmt"
) //定义一个接口
type Service interface {
doService()
getParam() string
setParam(input string)
} type ServiceImpl1 struct {
param string
} func (impl1 *ServiceImpl1) doService() {
fmt.Println("ServiceImpl1", impl1.param)
} func (impl1 *ServiceImpl1) getParam() string {
return impl1.param
} func (impl1 *ServiceImpl1) setParam(input string) {
impl1.param = input
} type ServiceImpl2 struct {
param string
} func (impl2 *ServiceImpl2) doService() {
fmt.Println("ServiceImpl2", impl2.param)
} func (impl2 *ServiceImpl2) getParam() string {
return impl2.param
} func (impl2 *ServiceImpl2) setParam(input string) {
impl2.param = input
} //测试利用接口的面向对象
func OOTest() {
var service Service
service = new(ServiceImpl1)
service.setParam("Fredric")
//打印ServiceImpl1 Fredric
service.doService() service = new(ServiceImpl2)
service.setParam("Sinny")
//打印ServiceImpl2 Sinny
service.doService()
}

GO 基础(一)的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. MIP改造常见问题二十问

    在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(72)-微信公众平台开发-消息处理

    系列目录 前言 Senparc.Weixin.MP SDK提供了MessageHandler消息处理类 在作者的Wiki中也详细说明了如何定义这个类,下面我们来演示,消息的回复,及效果 了解Messa ...

  3. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  4. javascript之闭包理解以及应用场景

    半个月没写博文了,最近一直在弄小程序,感觉也没啥好写的. 之前读了js权威指南,也写了篇博文,但是实话实说当初看闭包确实还是一头雾水.现在时隔一个多月(当然这一段时间还是一直有在看闭包的相关知识)理解 ...

  5. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  6. Oracle Standard Error 列表

    今天,我特意从网上找了一些,以及自己平时总结的,关于错误编号和说明,平时我们在写项目的时候,往往是可能会出现下面这些错误,例如:违反唯一约束,无效的会话ID,等等.希望对大家有点帮助!可以看看,如果有 ...

  7. 安装并使用PHPunit

    安装并使用PHPunit Linux 下安装PHPunit PHP 档案包 (PHAR)  要获取 PHPUnit,最简单的方法是下载 PHPUnit 的 PHP 档案包 (PHAR),它将 PHPU ...

  8. 微软开放.NET框架源代码和Mono

    微软一直在朝着更加开放的方向努力.例如,公司首席执行官萨特亚纳德拉(Satya Nadella)在Windows 10预览发布会上声称微软喜欢Linux,这并不出人意料,但是对于一家将Linux视作威 ...

  9. Centos6.x 下安装Jexus独立版

    操作步骤: #cd /tmp #wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz 注:如果有新版本,则修改为相应版本号即可. #tar -zxvf jexus ...

  10. JavaScript动画知多少?

    今天,小学生以自己浅薄的见地,在前辈大能的基础上写这篇文章,希望给大家打开一扇窥探JavaScript(以下简称JS)动画的窗户. JS如何制造出动画效果? 结合浏览器提供的 setInterval ...