Go語言程式:在切片中搜索元素


在本教程中,我們將學習如何使用不同的示例在切片中搜索元素。切片就像陣列一樣,是一系列元素的序列。陣列是一系列固定元素的序列,而切片是動態陣列,這意味著它的值不是固定的,可以更改。切片比陣列更高效、更快,並且它們是透過引用而不是透過值傳遞的。

語法

func append(slice, element_1, element_2…, element_N) []T

append 函式用於向陣列切片新增值。它接受多個引數。第一個引數是要新增值的陣列,後跟要新增的值。然後,該函式返回包含所有值的最終陣列切片。

方法 1:使用外部使用者定義函式

在這種方法中,我們將使用外部函式在切片中搜索元素。切片和要搜尋的元素將作為引數傳遞給函式。輸出將使用 fmt.Println() 函式列印到控制檯。讓我們透過程式碼瞭解它是如何完成的。

演算法

  • 步驟 1 − 建立一個名為 main 的包,並在程式中宣告 fmt(格式化包),其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個名為 search_ele 的函式,將切片和要搜尋的元素作為引數,此函式從 main 中呼叫。

  • 步驟 3 − 執行一個迴圈,直到切片的長度,並檢查要搜尋的元素是否等於切片的任何元素。

  • 步驟 4 − 如果為真,則返回索引;如果為假,則返回 -1 到自定義函式。

  • 步驟 5 − 呼叫 main 函式。

  • 步驟 6 − 在 main 函式中,檢查該值是否等於 -1,如果等於 -1,則列印該元素不存在於切片中,否則列印它存在於切片中。

  • 步驟 7 − 列印語句使用 fmt.Println() 函式執行,其中 ln 表示換行符。

示例

使用外部函式在切片中搜索元素的 Go 語言程式

package main
import "fmt"

func main() {
   // Declare a slice of integers
   var slice []int
   slice = append(slice, 10) // create slice using append function
   slice = append(slice, 20)
   slice = append(slice, 30)
   slice = append(slice, 40)
   slice = append(slice, 50)


   fmt.Println("The slice given here is:", slice)
   
   // Call the search function and store the value in a variable named val
   val := search_ele(slice, 40)
   fmt.Println("The value to be searched from the slice is:", 40)

   if val != -1 {
      fmt.Println("The element is found in slice at index:", val)
   } else {
      fmt.Println("The element was not found in the slice")
   }
}
func search_ele(slice []int, key int) int {
   for i, element := range slice {
      if element == key {  // check the condition if its true return index
         return i
      }
   }
   return -1
}

輸出

The slice given here is: [10 20 30 40 50]
The value to be searched from the slice is: 40
The element is found in slice at index: 3

方法 2:使用 main 函式

在這種方法中,我們將使用 main 函式在切片中搜索元素。將建立一個標誌,其值將幫助我們列印元素是否存在於切片中。輸出將使用 fmt.Println() 函式列印到控制檯。讓我們透過程式碼瞭解它是如何完成的。

演算法

  • 步驟 1 − 建立一個名為 main 的包,並在程式中宣告 fmt(格式化包),其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個 main 函式,並在函式中使用 append 函式建立一個切片,以及一個型別為 bool 的變數 flag,其初始值為 false。

  • 步驟 3 − 建立一個變數 item 併為其分配要搜尋的值。

  • 步驟 4 − 執行一個迴圈,直到切片的長度,並檢查要搜尋的元素是否等於切片的任何元素。

  • 步驟 5 − 如果為真,則將標誌設定為 true 並中斷迴圈,但如果為假,則執行迴圈直到結束,並在迴圈終止後檢查條件。

  • 步驟 6 − 如果標誌為真,則列印該元素存在於切片中的語句,否則列印該元素不存在於切片中的語句。

  • 步驟 7 − 列印語句使用 fmt.Println() 函式執行,其中 ln 表示換行符。

示例

使用 main 函式在切片中搜索元素的 Go 語言程式

package main

import "fmt"

func main() {
   
   var slice []int
   slice = append(slice, 10) // create slice using append function
   slice = append(slice, 20)
   slice = append(slice, 30)
   slice = append(slice, 40)
   slice = append(slice, 50)


   var flag bool = false  // assign initial value as false

   fmt.Println("The slice given here is:", slice)

   var item int = 8

   fmt.Println("The value to be searched from the slice is:", item)

   for element := range slice {
      if element == item {
         flag = true       // break the loop if flag is true
         break
      }
   }
   if flag {
      fmt.Println("The element is present in the slice")
   } else {
      fmt.Println("The element is not present in the slice")
   }
}

輸出

The slice given here is: [10 20 30 40 50]
The value to be searched from the slice is: 8
The element is not present in the slice

結論

我們使用兩個示例執行了搜尋切片元素的程式。在第一個示例中,我們使用自定義函式搜尋元素,在第二個示例中,我們使用 main 函式搜尋值。這兩個示例都提供了類似的輸出。因此,程式成功執行。

更新於: 2023年1月17日

3K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.