Jadual Kandungan
Jawapan betul
Rumah pembangunan bahagian belakang Golang Cipta struktur GO hanya jika syarat tertentu dipenuhi

Cipta struktur GO hanya jika syarat tertentu dipenuhi

Feb 08, 2024 pm 09:05 PM
Penggunaan memori

仅当满足特定条件时才创建 GO 结构

Editor PHP Zimo akan memperkenalkan anda kepada ciri penting, iaitu penciptaan struktur GO dalam keadaan tertentu. Ciri ini membolehkan kami menentukan sama ada untuk mencipta struktur GO mengikut keperluan, dengan itu meningkatkan kecekapan dan prestasi program. Dengan menggunakan ciri ini secara rasional, kita boleh mengelakkan penciptaan struktur GO yang tidak perlu, mengurangkan penggunaan memori dan tekanan pengumpulan sampah, dan meningkatkan kecekapan menjalankan program. Dalam artikel ini, kami akan memperincikan cara menggunakan ciri ini dan memberikan beberapa contoh aplikasi praktikal.

Kandungan soalan

Coretan kod go saya adalah seperti berikut:

type mystruct struct {
   a int
}

if a == nil {
        cond = 0
        var a_mystruct_obj mystruct  // if this condition is satified then only create this a_mystruct_obj obj
    } else if b == nil {
        cond = 1
        var b_mystruct_obj mystruct  // if this condition is satified then only create this b_mystruct_obj obj

    } else {
        cond = 2 // // if this condition is satified then create both the above structure objects  a_mystruct_obj & b_mystruct_obj.
         // is having the below declaration again in else a valid go code ?
        var a_mystruct_obj mystruct
        var b_mystruct_obj mystruct
    }
Salin selepas log masuk

Saya mempunyai latar belakang c++. Ini akan menjadi mudah dalam c++. Adakah terdapat peruntukan memori dinamik dalam pergi? Bagaimanakah saya boleh mencapai ini secara berterusan?

Adakah mengisytiharkan 2 lagi dalam kod go yang lain yang sah?

var A_mystruct_obj MyStruct
    var B_mystruct_obj MyStruct
Salin selepas log masuk

Atau adakah saya perlu mempunyai beberapa jenis polimorfisme masa jalan di sini.

Kemas kini:

Saya cuba melakukan ini tetapi ia tidak menyusun seperti yang diharapkan.

https://go.dev/play/p/ioq81aexgjn

dikemaskini lagi

Saya cuba ini dan nampaknya berkesan. Adakah ini okay?

https://go.dev/play/p/r_ywzmkgrps


Jawapan betul


Terdapat dua masalah dalam kod anda:

  1. Pembolehubah anda diisytiharkan dalam skop yang disertakan, jadi ia tidak boleh diakses dari luar skop tersebut (if/else klausa)
  2. Pembolehubah anda diisytiharkan sebagai nilai

Apabila anda menyelesaikan masalah pertama, iaitu dengan mengalihkan perisytiharan pembolehubah ke akses kod selepas penyataan if 子句范围之外,以使它们可以被 if:

    var a_mystruct_obj mystruct
    var b_mystruct_obj mystruct
    if a == nil {
        cond = 0
        // initialise a_mystruct
    } else if b == nil {
        cond = 1
        // initialise b_mystruct
    } else {
        cond = 2
        // initialise a_mystruct and b_mystruct
    }
Salin selepas log masuk

Kini kedua-dua pembolehubah diisytiharkan dan kedua-dua pembolehubah menggunakan klausa mana dalam pernyataan mystruct 进行初始化,无论到达 if yang baru ditetapkan.

Untuk menyelesaikan masalah ini, tukar pembolehubah kepada penunjuk dan tetapkan nilai yang diingini dalam cabang yang sepadan bagi pernyataan if:

    var a_mystruct_obj *mystruct
    var b_mystruct_obj *mystruct
    if a == nil {
        cond = 0
        a_mystruct_obj = &mystruct{}
    } else if b == nil {
        cond = 1
        b_mystruct_obj = &mystruct{}
    } else {
        cond = 2
        a_mystruct_obj = &mystruct{}
        b_mystruct_obj = &mystruct{}
    }
Salin selepas log masuk

Petua bonus: anda pada masa hadapan akan berterima kasih kerana memfaktorkan semula ini menjadi sepasang pernyataan, tentukan sama ada anda memerlukan a atau b atau kedua-duanya, kemudian mudahkan kompaun ab 或两者,然后简化您的复合 if 语句作为两个单独语句,分别初始化 ab pernyataan bertindak sebagai dua

berasingan

pernyataan, masing-masing memulakan a atau b:

    var A_mystruct_obj *MyStruct
    var B_mystruct_obj *MyStruct

    areq := a == nil || (..condition 2..) 
    breq := b == nil || (..condition 2..) 
    if areq {
        A_mystruct_obj = &MyStruct{}
    }
    if breq {
        B_mystruct_obj = &MyStruct{}
    }
Salin selepas log masuk
Tujuannya adalah untuk mengelakkan pertindihan logik (prinsip kering: a 和/或 b 是否需要的问题与初始化 abJangan ulangi diri sendiri) dan pemisahan kebimbangan. Iaitu, pisahkan persoalan bila

diperlukan. em> Diperlukan. condition 2

Nota: Tidak mungkin untuk lebih spesifik tentang cara menyatakan 🎜 kerana ia tidak jelas daripada kod yang anda siarkan tentang syaratnya. 🎜

Atas ialah kandungan terperinci Cipta struktur GO hanya jika syarat tertentu dipenuhi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Langkah terperinci untuk membersihkan memori di Xiaohongshu Langkah terperinci untuk membersihkan memori di Xiaohongshu Apr 26, 2024 am 10:43 AM

1. Buka Xiaohongshu, klik Saya di sudut kanan bawah 2. Klik ikon tetapan, klik Umum 3. Klik Kosongkan Cache

Apa yang perlu dilakukan jika telefon Huawei anda mempunyai memori yang tidak mencukupi (Kaedah praktikal untuk menyelesaikan masalah memori yang tidak mencukupi) Apa yang perlu dilakukan jika telefon Huawei anda mempunyai memori yang tidak mencukupi (Kaedah praktikal untuk menyelesaikan masalah memori yang tidak mencukupi) Apr 29, 2024 pm 06:34 PM

Memori yang tidak mencukupi pada telefon mudah alih Huawei telah menjadi masalah biasa yang dihadapi oleh ramai pengguna, dengan peningkatan dalam aplikasi mudah alih dan fail media. Untuk membantu pengguna menggunakan sepenuhnya ruang storan telefon bimbit mereka, artikel ini akan memperkenalkan beberapa kaedah praktikal untuk menyelesaikan masalah memori yang tidak mencukupi pada telefon mudah alih Huawei. 1. Bersihkan cache: rekod sejarah dan data tidak sah untuk mengosongkan ruang memori dan mengosongkan fail sementara yang dijana oleh aplikasi. Cari "Storan" dalam tetapan telefon Huawei anda, klik "Kosongkan Cache" dan pilih butang "Kosongkan Cache" untuk memadam fail cache aplikasi. 2. Nyahpasang aplikasi yang jarang digunakan: Untuk mengosongkan ruang memori, padamkan beberapa aplikasi yang jarang digunakan. Seret ia ke bahagian atas skrin telefon, tekan lama ikon "Nyahpasang" aplikasi yang ingin anda padamkan, kemudian klik butang pengesahan untuk menyelesaikan penyahpasangan. 3.Aplikasi mudah alih untuk

Cara menyempurnakan deepseek di dalam negara Cara menyempurnakan deepseek di dalam negara Feb 19, 2025 pm 05:21 PM

Penalaan setempat model kelas DeepSeek menghadapi cabaran sumber dan kepakaran pengkomputeran yang tidak mencukupi. Untuk menangani cabaran-cabaran ini, strategi berikut boleh diterima pakai: Kuantisasi model: Menukar parameter model ke dalam bilangan bulat ketepatan rendah, mengurangkan jejak memori. Gunakan model yang lebih kecil: Pilih model pretrained dengan parameter yang lebih kecil untuk penalaan halus tempatan yang lebih mudah. Pemilihan data dan pra-proses: Pilih data berkualiti tinggi dan lakukan pra-proses yang sesuai untuk mengelakkan kualiti data yang lemah yang mempengaruhi keberkesanan model. Latihan Batch: Untuk set data yang besar, beban data dalam kelompok untuk latihan untuk mengelakkan limpahan memori. Percepatan dengan GPU: Gunakan kad grafik bebas untuk mempercepatkan proses latihan dan memendekkan masa latihan.

SOTA terbaharu nuScenes |. SparseAD: Pertanyaan jarang membantu pemanduan autonomi hujung ke hujung yang cekap! SOTA terbaharu nuScenes |. SparseAD: Pertanyaan jarang membantu pemanduan autonomi hujung ke hujung yang cekap! Apr 17, 2024 pm 06:22 PM

Ditulis di hadapan & titik permulaan Paradigma hujung ke hujung menggunakan rangka kerja bersatu untuk mencapai pelbagai tugas dalam sistem pemanduan autonomi. Walaupun kesederhanaan dan kejelasan paradigma ini, prestasi kaedah pemanduan autonomi hujung ke hujung pada subtugas masih jauh ketinggalan berbanding kaedah tugasan tunggal. Pada masa yang sama, ciri pandangan mata burung (BEV) padat yang digunakan secara meluas dalam kaedah hujung ke hujung sebelum ini menyukarkan untuk membuat skala kepada lebih banyak modaliti atau tugasan. Paradigma pemanduan autonomi hujung ke hujung (SparseAD) tertumpu carian jarang dicadangkan di sini, di mana carian jarang mewakili sepenuhnya keseluruhan senario pemanduan, termasuk ruang, masa dan tugas, tanpa sebarang perwakilan BEV yang padat. Khususnya, seni bina jarang bersatu direka bentuk untuk kesedaran tugas termasuk pengesanan, penjejakan dan pemetaan dalam talian. Di samping itu, berat

Apa yang perlu dilakukan jika pelayar Edge menggunakan terlalu banyak memori Apa yang perlu dilakukan jika pelayar Edge menggunakan terlalu banyak memori Apa yang perlu dilakukan jika pelayar Edge menggunakan terlalu banyak memori Apa yang perlu dilakukan jika pelayar Edge menggunakan terlalu banyak memori May 09, 2024 am 11:10 AM

1. Mula-mula, masukkan pelayar Edge dan klik tiga titik di penjuru kanan sebelah atas. 2. Kemudian, pilih [Sambungan] dalam bar tugas. 3. Seterusnya, tutup atau nyahpasang pemalam yang anda tidak perlukan.

Dengan hanya $250, pengarah teknikal Hugging Face mengajar anda cara memperhalusi Llama 3 Dengan hanya $250, pengarah teknikal Hugging Face mengajar anda cara memperhalusi Llama 3 May 06, 2024 pm 03:52 PM

Model bahasa besar sumber terbuka yang biasa seperti Llama3 yang dilancarkan oleh model Meta, Mistral dan Mixtral yang dilancarkan oleh MistralAI, dan Jamba yang dilancarkan oleh AI21 Lab telah menjadi pesaing OpenAI. Dalam kebanyakan kes, pengguna perlu memperhalusi model sumber terbuka ini berdasarkan data mereka sendiri untuk melancarkan potensi model sepenuhnya. Tidak sukar untuk memperhalusi model bahasa besar (seperti Mistral) berbanding model kecil menggunakan Q-Learning pada GPU tunggal, tetapi penalaan halus yang cekap bagi model besar seperti Llama370b atau Mixtral kekal sebagai cabaran sehingga kini . Oleh itu, Philipp Sch, pengarah teknikal HuggingFace

Kesan gelombang AI adalah jelas TrendForce telah menyemak semula ramalannya untuk memori DRAM dan harga kontrak memori kilat NAND meningkat pada suku ini. Kesan gelombang AI adalah jelas TrendForce telah menyemak semula ramalannya untuk memori DRAM dan harga kontrak memori kilat NAND meningkat pada suku ini. May 07, 2024 pm 09:58 PM

Menurut laporan tinjauan TrendForce, gelombang AI mempunyai impak yang besar pada memori DRAM dan pasaran memori flash NAND. Dalam berita laman web ini pada 7 Mei, TrendForce berkata dalam laporan penyelidikan terbarunya hari ini bahawa agensi itu telah meningkatkan kenaikan harga kontrak untuk dua jenis produk storan pada suku ini. Secara khusus, TrendForce pada asalnya menganggarkan bahawa harga kontrak memori DRAM pada suku kedua 2024 akan meningkat sebanyak 3~8%, dan kini menganggarkannya pada 13~18% dari segi memori kilat NAND, anggaran asal akan meningkat sebanyak 13~ 18%, dan anggaran baharu ialah 15%. ~20%, hanya eMMC/UFS mempunyai peningkatan yang lebih rendah sebanyak 10%. ▲Sumber imej TrendForce TrendForce menyatakan bahawa agensi itu pada asalnya menjangkakan untuk meneruskan

Adakah win11 mengambil kurang memori daripada win10? Adakah win11 mengambil kurang memori daripada win10? Apr 18, 2024 am 12:57 AM

Ya, secara keseluruhan, Win11 menggunakan kurang memori daripada Win10. Pengoptimuman termasuk kernel sistem yang lebih ringan, pengurusan memori yang lebih baik, pilihan hibernasi baharu dan proses latar belakang yang lebih sedikit. Ujian menunjukkan bahawa jejak memori Win11 biasanya 5-10% lebih rendah daripada Win10 dalam konfigurasi yang serupa. Tetapi penggunaan memori juga dipengaruhi oleh konfigurasi perkakasan, aplikasi dan tetapan sistem.

See all articles