Go基础(1)
demo1:
package add var Name string = "hello world"
var Age int = 10
package main import (
"DEMO/test/day2/example2/add"
"fmt"
) func main() { fmt.Println("Name:", add.Name)
fmt.Println("Age:", add.Age) }
分析:
1.调包,需要写GOPATH目录下src目录之后的路径
比如我电脑的GOPATH:D:\PROJECT\GO_PROJECT
我的add包目录:D:\PROJECT\GO_PROJECT\src\DEMO\test\day2\example2\add
2.一个文件夹里面只能有一个包,最好同名
3.main函数必须在main包中
4.private变量小写首字母,public变量大写首字母即可
demo2:
package add var Name string = "test"
var Age int = 666 func init() {
Name = "Hello World!"
Age = 10
}
package main import (
a "DEMO/test/day2/example3/add"
"fmt"
) func main() { fmt.Println("Name:", a.Name)
fmt.Println("Age:", a.Age) }
分析:
1.导入的包可以取别名,比如我这里的a
2.init函数在初始赋值后执行,所以这里应该输出的是helloworld和10
demo3:
package main import (
"fmt"
) func modify(a int) {
a = 10
return
} func modity(a *int) {
*a = 10
return
} func main() {
a := 5
b := make(chan int, 1)
fmt.Println("a =", a)
fmt.Println("b =", b)
modify(a)
fmt.Println("a =", a)
modity(&a)
fmt.Println("a =", a)
}
分析:
1.依次输出:a = 5,b = 0xc0000160e0,a = 5,a = 10
2.理解修改地址和修改引用的区别
demo4:
package main
import "fmt"
func swap(a *int, b *int) {
temp := *a
*a = *b
*b = temp
return
}
func go_swap(a int, b int) (int, int) {
return b, a
}
func main() {
three := 3
four := 4
swap(&three, &four)
fmt.Println("---Swap---")
fmt.Println("three =", three)
fmt.Println("four =", four)
three, four = go_swap(three, four)
fmt.Println("---Swap---")
fmt.Println("three =", three)
fmt.Println("four =", four)
}
分析:
1.两种交换都是正确的
2.理解传统c语言交换函数以及多返回值形式的交换函数
demo5:
package main import (
"fmt"
"math/rand"
"time"
) func init() {
rand.Seed(time.Now().UnixNano())
} func main() {
fmt.Println("---Generate Random Number---")
fmt.Println("--Int---")
for i := 0; i < 3; i++ {
a := rand.Int()
fmt.Println(a)
}
fmt.Println("---Int(100)---")
for i := 0; i < 3; i++ {
a := rand.Intn(100)
fmt.Println(a)
}
fmt.Println("---Float32---")
for i := 0; i < 3; i++ {
a := rand.Float32()
fmt.Println(a)
}
}
分析:
1.简单的随机数生产程序,学会rand和time的基本使用
2.根据当前的精确时间给rand一个种子,保证随机的不确定性
demo6:
package main
import "fmt"
func reverse1(str string) string {
var result string
strLen := len(str)
for i := 0; i < strLen; i++ {
result += fmt.Sprintf("%c", str[strLen-i-1])
}
return result
}
func reverse2(str string) string {
var result []byte
tmp := []byte(str)
lenth := len(str)
for i := 0; i < lenth; i++ {
result = append(result, tmp[lenth-i-1])
}
return string(result)
}
func main() {
str := "hello world!"
result := reverse2(str)
fmt.Printf("str:%s\nresult:%s\n", str, result)
}
分析:
1.反转字符串的两种形式
demo7:
package main import (
"fmt"
"math"
) func main() {
min := 1
max := 100
for i := min; i <= max; i++ {
var flag bool = true
if i == 1 {
flag = false
}
for j := 2; j <= int(math.Sqrt(float64(i))); j++ {
if i%j == 0 {
flag = false
break
}
}
if flag {
fmt.Printf("%d是素数\n", i)
}
}
}
分析:
1.求1-100的所有质数
2.注意求指数过程优化,除数最大达到根号被除数即可
demo8:
package main import (
"fmt"
"strconv"
) func main() {
min := 1
max := 1000
for i := min; i <= max; i++ {
if isNarcissisticNumber(i) {
fmt.Printf("%d是水仙花数\n", i)
}
}
} func isNarcissisticNumber(n int) bool {
tmp := strconv.Itoa(n)
data := []byte(tmp)
lenth := len(data)
var result int = 0
for i := 0; i < lenth; i++ {
number, _ := strconv.Atoi(string(data[i]))
result += number * number * number
}
if n == result {
return true
} else {
return false
}
}
分析:
1.求水仙花数的一种实现
2.这里的Atoi是多返回值函数,用不到的返回值用“_”代替即可
3.这里是字符串处理的方式实现,还可以用除10的数学方式实现
demo9:
package main
import "fmt"
func main() {
fmt.Println(factorial(5))
}
func factorial(n uint) uint {
if n == 0 {
return 1
}
if n == 1 {
return n
}
return n * factorial(n-1)
}
分析:
1.利用递归实现阶乘,是比较优秀的实现方式
Go基础(1)的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- mvn -DskipTests和-Dmaven.test.skip=true区别
在使用mvn package进行编译.打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip= ...
- genymotion的安装及运行
一.下载工具 安装genymontion一共需要下载三个东西,分别是genymotion.虚拟机virtualbox和ova 笔者提供百度云下载:mac版虚拟机 mac上genymotion.wind ...
- 7. 整合shiro,搭建粗粒度权限管理
shiro是一个易用的权限管理框架,只需提供一个Realm即可在项目中使用,本文就将结合上一篇中搭建的权限模块.角色模块和用户模块来搭建一个粗粒度的权限管理系统,具体如下:1. 添加shiro依赖和与 ...
- pymysql和 SQLAlchemy在python下的使用
#!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy import create_engine, Table, Column, In ...
- 关于Python元祖,列表,字典,集合的比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'], ...
- 【英国毕业原版】-《博尔顿大学毕业证书》Bolton一模一样原件
☞博尔顿大学毕业证书[微/Q:2544033233◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归& ...
- ACM——八大输出方式总结
个人做题总结,希望能够帮助到未来的学弟学妹们的学习! 永远爱你们的 ----新宝宝 1: 题目描述 Your task is to Calculate a + b. Too easy?! Of cou ...
- String去重方法
思路:利用集合的contains方法将某个字符串中的集合中没有的单个字符添加到集合中,然后再将集合中每个元素做拼接 @Test public void aa5(){ String aa="a ...
- C# 指定父層級目錄
lstrcatW(pszpath, "\\..\\..\\"); DWORD dwlen = GetFullPathNameW(pszpath, 0u, null, null); ...
- Node中流的概念
在学习node的过程中,对于流的概念一直不是很理解,通过查阅一些资料,现在将自己对流的一些理解进行总结一下. 一.流的理解 首先我们必须知道什么是流,很多书中只是提到使用流读写文件怎么怎么方便,却不提 ...