import "fmt"
func Bub(value []int) {
flag := true //这里是打一个标识的意思
for i := 0 i < len(value)-1 i++ { //每完成一次这里的循环,都会有一个元素冒泡到最上面
flag = true
fmt.Printf("i=%d j=%d\n", i, len(value)-i-1)
for j := 0 j < len(value)-i-1 j++ {
if value[j] > value[j+1] {
value[j], value[j+1] = value[j+1], value[j]
flag = false
}
}
if flag == true { //当没有发生位置交换的时候说明,顺序排好了
break
}
}
}
func main() {
a := []int{7, 2, 1, 3, 5}
Bub(a)
}
只能帮你到这里了,建议你用在纸上演算一遍 那个 a 变量
要判断数据类型,可以用Go的空接口:建一个函数t 设置参数i 的类型为空接口,空接口可以接受任何数据类型
func t(i interface{}) {
//函数t
有一个参数i
switch i.(type) {
//多选语句switch
case string:
//是字符时做的事情
case int:
//是整数时做的事情
}
return
}
i.(type)
只能在switch中使用
这函数没有返回值,你可以自己加入
还可以用反射:
package main
import (
"fmt"
"reflect"
)
func main() {
var x float64 = 3.4
fmt.Println("type:", reflect.TypeOf(x))
}
这样就可以得出变量x的类型信息,与上面不同的是:上面的方法要先知到它是几个类型中的一个,而这个方法可以对任意对象使用