Open Q1mi opened 5 years ago
数组初始化方法一 int后面要加{} 否则运行时候 .\test.go:6:18: type [3]int is not an expression
package main
import "fmt"
func main() {
var testArray = [3]int{}
var numArray = [3]int{1, 2}
var cityArray = [3]string{"北京", "上海", "深圳"}
fmt.Println(testArray)
fmt.Println(numArray)
fmt.Println(cityArray)
}
package main
import "fmt"
func main() { h := [5]int{1, 3, 5, 7, 8} for i := 0; i < len(h); i++ { // fmt.Println(h[i]) num_up := h[i] // for u in range(i,len(h)) for u := i + 1; u < len(h); u++ { // fmt.Println(h[u]) num_down := h[u] sum := num_up + num_down // fmt.Println(sum) if sum == 8 { fmt.Println(i, u) } } } }
package main
import "fmt"
func main() { h := [5]int{1, 3, 5, 7, 8} for i := 0; i < len(h); i++ { // fmt.Println(h[i]) num_up := h[i] // for u in range(i,len(h)) for u := i + 1; u < len(h); u++ { // fmt.Println(h[u]) num_down := h[u] sum := num_up + num_down // fmt.Println(sum) if sum == 8 { fmt.Println(i, u) } } } }
变量名推荐使用驼峰命名法。
@Q1mi
package main
import "fmt"
func main() { h := [5]int{1, 3, 5, 7, 8} for i := 0; i < len(h); i++ { // fmt.Println(h[i]) num_up := h[i] // for u in range(i,len(h)) for u := i + 1; u < len(h); u++ { // fmt.Println(h[u]) num_down := h[u] sum := num_up + num_down // fmt.Println(sum) if sum == 8 { fmt.Println(i, u) } } } }
变量名推荐使用驼峰命名法。
收到,以前写习惯了,慢慢改下
@chengkanghua var testArray [3]int var testArray = [3]int{} 两种不同的写法哟
package main
import "fmt"
func main(){ fmt.Println("hello world") var numArray = [5]int{1, 3, 5, 7, 8} for i := 0; i < len(numArray); i++{ for j := i+1; j <len(numArray); j++{ if numArray[i] + numArray[j] == 8{ fmt.Println(i,j) } } } }
func main() { var sum int var num = [...]int{1, 3, 5, 7, 8} for i := 0; i < len(num); i++ { sum += num[i] } fmt.Println(sum)
for _, value1 := range num {
for i := 0; i < len(num)/2; i++ {
if value1+num[i] == 8 {
fmt.Println(value1, num[i])
}
}
}
}
package main
import "fmt"
//求数组[1, 3, 5, 7, 8]所有元素的和
func Sum() {
a := [5]int{1, 3, 5, 7, 8}
sum := 0
for _, i := range a {
sum += i
}
fmt.Println(sum)
}
//找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
func Find() {
a := [5]int{1, 3, 5, 7, 8}
for i, j := range a {
for l, k := range a[i+1:] {
if j+k == 8 {
fmt.Printf("(%d, %d) ", i, l+i+1)
}
}
}
}
func main() {
Find()
}
// 第一题 package main
import "fmt"
// 求数组[1, 3, 5, 7, 8]所有元素的和 func main() { var a = [...]int{1, 3, 5, 7, 8} var sum = 0 for _, value := range a { sum += value } fmt.Printf("sum=%d\n", sum) }
// 第二题 package main
import "fmt"
// 找出数组中和为指定值的两个元素的下标, // 比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。 func main() { a := [...]int{1, 3, 5, 7, 8} for i := 0; i < len(a); i++ { for j := i+1; j < len(a); j++ { if a[i] + a[j] == 8 { fmt.Printf("(%d, %d)\n", i, j) } } } }
1.
package main
import "fmt"
func sum(array [5]int) int {
sum := 0
for _, v := range array {
sum = sum + v
}
return sum
}
func main() {
var array = [5]int{1, 3, 5, 7, 8}
fmt.Println("sum(array):", sum(array))
}
2.
package main
import "fmt"
func main() {
var array = [5]int{1, 3, 5, 7, 8}
length := len(array)
const num = 8
for i := 0; i < length-1; i++ {
for j := i + 1; j < length; j++ {
if array[i]+array[j] == num {
fmt.Printf("(%d, %d) \n", i, j)
}
}
}
}
package main
import "fmt"
func main() { sum := 0 arrTest := [...]int{1, 3, 5, 7, 8} for _, v := range arrTest { sum += v } fmt.Println("sum of array arrTest is", sum)
for i := 0;i < len(arrTest);i++{
for j := 0;j < i;j++{
if arrTest[i] + arrTest[j] == 8{
fmt.Printf("%d + %d = %d\n",arrTest[i],arrTest[j],arrTest[i]+arrTest[j])
fmt.Printf("%d,%d\n",i,j)
}
}
}
}
func test() {
var arrayTest = [...]int{1, 3, 5, 7, 8}
sum := 0
for index, value := range arrayTest {
sum += value
for i := index + 1; i < len(arrayTest); i++ {
if arrayTest[i]+value == 8 {
fmt.Printf("(%v,%v)\n", index, i)
}
}
}
fmt.Println(sum)
}
@yeahQing
func test() { var arrayTest = [...]int{1, 3, 5, 7, 8} sum := 0 for index, value := range arrayTest { sum += value for i := index + 1; i < len(arrayTest); i++ { if arrayTest[i]+value == 8 { fmt.Printf("(%v,%v)\n", index, i) } } } fmt.Println(sum) }
func addSum(x [5]int) { sum := 0 for i := range x { sum += x[i] } fmt.Printf("sum=%d",sum) }
func findSumEqEight(x [5]int) { for k, := range x { sum := 8 for i, := range x { if sum == x[k] + x[i] { fmt.Printf("(%d,%d)",k,i) } } } }
package main
import "fmt"
func main() {
var a = [...]int{1, 3, 5, 7, 8}
for i := 0; i < len(a); i++ {
for j := i + 1; j < len(a); j++ {
if a[i]+a[j] == 8 {
fmt.Println(i, j)
}
}
}
}
下标 z := [...]int{1, 3, 5, 7, 8}
for i := 0; i < len(z); i++ {
for j := i + 1; j < len(z); j++ {
if z[i] + z[j] == 8 {
fmt.Println(i, j)
}
}
}
package main
import ("fmt")
func main() {
Find(8)
}
func Find(c int) {
// ----------------------
arr := [...]int{1, 3, 5, 7, 8, 2, 4, 5, 0}
b := map[int]int{}
for i, v := range arr {
if _, ok := b[v]; ok {
fmt.Printf("(%d, %d)", b[v], i)
} else {
b[c - arr[i]] = i
}
}
}
func main() {
a := [...]int{1,3,5,7,8}
sum := 0
fmt.Println("两数之和为 8 的下标")
for i := 0; i < len(a);i++ {
sum += a[i]
for j := i+1;j<len(a) ;j++ {
if a[i] + a[j] == 8 {
fmt.Printf("[%d,%d] \n",i,j)
}
}
}
fmt.Println("数组的元素之和为:",sum)
}
exArray := [...]int{1, 3, 5, 7, 8}
//第一题
sum := 0 //初始化和
for _, v := range exArray {
sum = sum + v
}
fmt.Println(sum)
//第二题
for in1, i := range exArray {
for in2, j := range exArray {
if i+j == 8 && i < j {
fmt.Printf("(%d, %d)\n", in1, in2)
}
}
}
a := [...]int{1, 3, 5, 7, 8}
//1.求数组[1, 3, 5, 7, 8]所有元素的和
sum := 0
for _, array := range a {
fmt.Println(array)
sum += array
}
fmt.Printf("sum=%b", sum)
//2.找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
for index1, value1 := range a {
for index2, value2 := range a {
if value2+value1 == 8 {
if index1 < index2 {
fmt.Println(index1, index2)
}
}
}
}
func main() {
//1、求数组[1, 3, 5, 7, 8]所有元素的和。
a := [5]int{1, 3, 5, 7, 8} //人工计算应该为:24
b := 0
for _, v := range a {
b += v
}
fmt.Println("数组a所有元素相加后共为:", b)
//2、找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
for i, v := range a {
for i2, v2 := range a {
if v+v2 == 8 && i < i2 {//前面的是条件,后面的是避免再出现换了位置而相同的元素下标。
fmt.Printf("(%v,%v)", i, i2)
}
}
}
}
取巧的方法 Leetcode第一题 两数之和 标准写法 只不过不会用map (滑稽)
package main
import `fmt`
func main() {
// 1, 3, 5, 7, 8 target = 8
a := [...]int{1, 3, 5, 7, 8}
_map := [9]int{-1, -1, -1, -1, -1, -1, -1, -1, -1}
for i, v := range a {
if _map[8-v] != -1 {
fmt.Println("/ _map[8-v] =", _map[8-v], "/ i =", i,)
}
_map[v] = i
}
}
package main
import "fmt"
func twoSum(nums []int, target int) {
l := len(nums)
for i := 0; i < l; i++ {
for j := i + 1; j < l; j++ {
if nums[i]+nums[j] == target {
fmt.Printf("%d + %d = %d \n", nums[i], nums[j], target)
}
}
}
}
func main() {
// 1.
var numArray = []int{1, 3, 5, 7, 8}
var sum int
for _, v := range numArray {
sum += v
}
fmt.Println("sum = ", sum)
// 2.
twoSum(numArray, 8)
}
package main
import ( "fmt" ) //作业一
func main() {
c1 := [...]int{1, 3, 5, 7, 8}
var sum int
for _, c2 := range c1 {
sum += c2
}
fmt.Println(sum)
}
package main
import "fmt"
func main() {
sum := 0
a := [...]int{1,3,5,7,8}
for _,v := range a{
sum+=v
}
fmt.Println(sum)
for i:=0;i<len(a);i++{
for j:=i;j<len(a)-i;j++{
if a[i]+a[j]==8{
fmt.Printf("(%d,%d)\n",i,j)
}
}
}
}
func main() { m := [...]int{1, 3, 5, 7, 8}
for i := 0; i < len(m); i++ {
for j := i + 1; j < len(m); j++ {
sum := m[i] + m[j]
if sum == 8 {
fmt.Printf("%d,%d\n", i, j)
}
}
}
}
package main
import "fmt"
func main(){
//求数组[1, 3, 5, 7, 8]所有元素的和
i1 := [...]int {1, 3, 5, 7, 8}
var sum int
for _, v := range i1 {
sum += v
}
fmt.Println(sum)
//找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
a1 := [...]int{1, 3, 5, 7, 8}
aLen := len(a1)
for i :=0; i < aLen; i++{
for j := i+1; j< aLen; j++{
if a1[i]+a1[j] == 8 {
fmt.Printf("(%d, %d)", i, j)
}
}
}
}
done
package main
import "fmt"
func main() {
fmt.Printf("%T", "hello")
var arr = [...]int{1, 3, 5, 7, 8}
test1(arr)
test2(arr)
}
func test1(arr [5]int) {
//求数组[1, 3, 5, 7, 8]所有元素的和
sum := 0
for i := 0; i < len(arr); i++ {
sum += arr[i]
}
fmt.Printf("数组之和为 %d \n", sum)
}
func test2(arr [5]int) {
//找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)
for index, val := range arr {
for i := index+1; i< len(arr);i++ {
if(val+arr[i])==8{
fmt.Printf("(%d,%d)",index,i)
}
}
}
}
package main
import "fmt"
func sum(arrs [5]int) int { sum := 0 for _, val := range arrs { sum = sum + val } return sum }
func tsum(rows [5]int) int { r := 8
for key, val := range rows {
for keys, vals := range rows {
e := val + vals
if e == r {
fmt.Println(key, keys)
}
}
}
return 1
} func main() { arr := [...]string{"上海", "新疆"} fmt.Println(arr)
row := [...]int{2: 2, 10: 10}
fmt.Println(row)
arrs := [...]int{1, 3, 4, 7, 8}
res := sum(arrs)
fmt.Println(res)
//fmt.Println(arrs)
// 求和的数字
rows := [...]int{1, 3, 5, 7, 8}
// ios := 8
info := tsum(rows)
fmt.Println(info)
}
func con(a [5]int) int { sum := 0 for _, v := range(a){ sum = sum + v } //res := sum return sum }
func main() { a := [...]int{1, 3, 5, 7, 8} fmt.Println(con(a)) }
func search(a [5]int) { for i, v := range a { for j := i; j<len(a); j++ { if v+a[j] == 8 { fmt.Println(i, j) } } } } func main() { a := [...]int{1, 3, 5, 7, 8} //fmt.Println(con(a)) search(a) }
func Exercise1(){ sum := 0 for ,r := range [5]int {1,3 ,5, 7, 8} { sum += r } fmt.Println("ExerciseOne:", sum) }
func Exercise_2(){ ArrayTest := [...]int{1, 3, 5, 7, 8} for i:=0;i<len(ArrayTest);i++{ for j:=i+1; j<len(ArrayTest);j++{ if ArrayTest[i]+ArrayTest[j] == 8{ fmt.Println("(",i,",",j,")") } } } }
// 求数组元素和
func sum() {
a := [...]int{1, 3, 5, 7, 8}
var count int
for _, num := range a {
count += num
}
fmt.Println(count)
}
// 求和为指定数的下标组合
func targetIndex() {
target := 8
a := [...]int{1, 3, 5, 7, 8}
var flag map[int]int
flag = make(map[int]int)
for _, num := range a {
flag[num] = -1
}
for i, num := range a {
if flag[num] != -1 {
fmt.Println(flag[num], i)
}
flag[target - num] = i
}
}
// 找出数组中和为指定值的两个元素的下标
func targetIndex(target int) {
a := [...]int{1, 3, 5, 7, 8}
var flag map[int]int
flag = make(map[int]int)
for _, num := range a {
flag[num] = -1
}
for i, num := range a {
if flag[num] != -1 {
fmt.Println(flag[num], i)
}
flag[target-num] = i
}
}
for a := 0; a < len(bArray); a++ {
for b := a; b < len(bArray); b++ {
if a == b {
continue
} else {
c := bArray[a] + bArray[b]
if c == 8 {
fmt.Printf("a=%v,b=%v\n", a, b)
}
}
}
}
func homeWorkThree(){
a := [...]int{1, 3, 5, 7, 8}
var sum int
for _, val :=range a{
sum += val
}
fmt.Println(sum)
for i:=0; i<len(a); i++{
for j:=i+1; j<len(a); j++{
if(a[i]+a[j]==8){
fmt.Println(i,j)
}
}
}
}
func findIndex() {
num := []int{1, 3, 5, 7, 8}
for i, n := range num {
for j := i; j < len(num); j++ {
if n+num[j] == 8 {
fmt.Printf("%v-%v\n", i, j)
}
}
}
}
package main
import ( "fmt" )
func main() { num := [...]int{1, 3, 5, 7, 8} var i int for _, s := range num { i += s } fmt.Println(i)
num1 := [...]int{1, 3, 5, 7, 8}
for a := 0; a < len(num1); a++ {
for b := a + 1; b < len(num1); b++ {
if num1[a]+num1[b] == 8 {
fmt.Println(a, b)
}
}
}
}
package main
import ( "fmt" )
func main() { a := [...]int{1,3,5,7,8} //求数组所有元素的和 sum = 0 for ii:=0; ii<len(a); ii++ { sum += a[ii] } fmt.Println(sum)
//找出数组中和为8的两个元素的下标
for ii:=0; ii<len(a); ii++{
for jj:=ii+1; jj<len(a); jj++{
if (a[ii] + a[jj]) == 8 {
fmt.Printf("%v,%v\n",ii,jj)
}
}
}
}
//第一题 // 24
var n2 = []int{1, 3, 5, 7, 8}
var sum = 0
for _, i := range n2 {
sum = sum + i
}
fmt.Println(sum)
//第二题 (0-3) (1-2)
for i := 0; i < len(n2); i++ {
for j := i + 1; j < len(n2); j++ {
if compare(n2[i], n2[j], n2) {
fmt.Printf("%d-%d\n", i, j)
}
}
}
func compare(x int, y int, arr []int) bool { for v := range arr { if x+y == arr[v] { return true } } return false }
//练习题1 func sum(){ sumArray := []int {1,3,5,7,9} var sum int for _,i := range sumArray{ sum = sum + i } fmt.Println(sum) }
//练习题2 func sumTest(){ sumArray := []int {1,3,5,7,9} var sum int for i := 0; i < len(sumArray); i++{ for j := i+1; j < len(sumArray); j++{ sum = sumArray[i] + sumArray[j] if sum == 8 { fmt.Println(i,j) } } } }
//练习题2
func exec2() {
arr := [...]int{1,3,5,7,8}
for i:=0; i<len(arr)/2; i++ { //这里只需要到一半就可以
for j := i+1; j<len(arr); j++ {
if (arr[i]+arr[j]) == 8 {
fmt.Printf("(%d,%d)\n",i,j)
}
}
}
}
数组是值类型这个描述有点不是很准确吧,测试了一下定长的数组传递到函数中时确实是值传递,如果是变长数组传递的是引用类型
func main() {
nums1 := [3]int{1, 2, 3}
nums2 := []int{1, 2, 3}
fmt.Printf("&nums1: %p\n", &nums1)//&nums1: 0xc0000201e0
fmt.Printf("&nums1[0]: %p\n", &nums1[0])//&nums1[0]: 0xc0000201e0
fmt.Printf("&nums2: %p\n", &nums2)//&nums2: 0xc00000e1e0
fmt.Printf("&nums2[0]: %p\n", &nums2[0])//&nums2[0]: 0xc000020200
modifyArray1(nums1)
modifyArray2(nums2)
}
func modifyArray1(x [3]int) {
fmt.Printf("func &nums1: %p\n", &x)//func &nums1: 0xc000020220
fmt.Printf("func &nums1[0]: %p\n", &x[0])//func &nums1[0]: 0xc000020220
}
func modifyArray2(x []int) {
fmt.Printf("func &nums2: %p\n", &x)//func &nums2: 0xc00000e200
fmt.Printf("func &nums2[0]: %p\n", &x[0])//func &nums2[0]: 0xc000020200
}
@typ0520 数组是值类型这个描述有点不是很准确吧,测试了一下定长的数组传递到函数中时确实是值传递,如果是变长数组传递的是引用类型
func main() { nums1 := [3]int{1, 2, 3} nums2 := []int{1, 2, 3} fmt.Printf("&nums1: %p\n", &nums1)//&nums1: 0xc0000201e0 fmt.Printf("&nums1[0]: %p\n", &nums1[0])//&nums1[0]: 0xc0000201e0 fmt.Printf("&nums2: %p\n", &nums2)//&nums2: 0xc00000e1e0 fmt.Printf("&nums2[0]: %p\n", &nums2[0])//&nums2[0]: 0xc000020200 modifyArray1(nums1) modifyArray2(nums2) } func modifyArray1(x [3]int) { fmt.Printf("func &nums1: %p\n", &x)//func &nums1: 0xc000020220 fmt.Printf("func &nums1[0]: %p\n", &x[0])//func &nums1[0]: 0xc000020220 } func modifyArray2(x []int) { fmt.Printf("func &nums2: %p\n", &x)//func &nums2: 0xc00000e200 fmt.Printf("func &nums2[0]: %p\n", &x[0])//func &nums2[0]: 0xc000020200 }
Go语言中没有变长数组,你这里应该说的是切片(slice),切片属于引用类型,它包含一个底层数组的引用。
package main
import "fmt"
func main() {
var a = [...]int{1, 3, 5, 7, 8}
var sum = 0
// 求和
for _, i := range a {
sum += i
}
fmt.Println("数组和为:", sum)
// 输出和为8的元素下标
for i, j := range a {
for k, m := range a {
if j+m == 8 && i < len(a)/2 {
fmt.Printf("和为8的元素下标是:(%d, %d)\n", i, k)
}
}
}
}
func main(){
ar:=[]int{1,3,5,7,8}
fmt.Println(sum(ar))
fmt.Println(findTwoSum(ar,8))
}
func sum(ar []int) int {
s:=0
for _,v:=range(ar) {s+=v}
return s
}
func findTwoSum(ar[] int,num int)([][2]int){
l := len(ar)
arr := [][2]int{}
for i:=0;i<l;i++{
for j:=i;j<l;j++{
if ar[i]+ar[j]==num{
arr=append(arr,[2]int{i,j})
}
}
}
return arr
}
package main
import "fmt"
/* // 作业第一题
func addArray(a []int) int {
total := 0
for _, value := range a {
total += value
}
return total
}
func main() {
x := addArray([]int{1, 3, 5, 7, 8, 10})
fmt.Println(x)
}
*/
// 作业第二题
func findIndex(a []int, b int) [][2]int {
var x [][2]int
for i := 0; i < len(a); i++ {
for j := i + 1; j < len(a); j++ {
if a[i]+a[j] == b {
x = append(x, [2]int{i, j})
}
}
}
return x
}
func main() {
a := []int{1, 3, 5, 7, 8, 6, 4, 4, 2}
b := 8
res := findIndex(a, b)
fmt.Println(res)
}
package main
import "fmt"
var my_array = [...]int{1, 3, 5, 7}
// 求数组之和
func add() {
x := 0
for _, v := range my_array {
x += v
}
fmt.Println(x)
}
//找出数组中和为指定值的两个元素的下标
func find(n int) {
for i:=0;i<len(my_array);i++ {
x := my_array[i]
for j:=0;j<i;j++{
y:=my_array[j]
if x != y && x+y==n{
fmt.Println(i,j)
}
}
}
}
func main() {
add()
find(4)
}
https://www.liwenzhou.com/posts/Go/05_array/
李文周的Blog